redis 五種數據類型

redis支持五種數據類型:string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合sorted set)。

1. string(字符串)

字符串類型是redis中最基本的數據類型,它能存儲任何形式的字符串,包括二進制數據、序列化後的數據、JSON化的對象甚至是一張圖片。

string命令

說明

set key value

設置指定key的值

setex key seconds value

set expire的簡寫。將值value關聯到key,並將key的過期時間設爲seconds

setnx key value

set if not exists的簡寫。只有在key不存在時設置key的值,key存在時則不設置value值

setrange key offset value

從指定的位置開始將key的值替換爲新的字符串,

msetnx key1 value [key2 value2…]

同時設置一個或多個 key-value對

mset key1 value [key2 value2…]

同時設置一個或多個 key-value 對,當且僅當所有給定 key 都不存在時才能設置成功;否則只要有一個key存在都會失敗

getset key value

將給定key的值設置爲value,並返回key的舊值

append key value

如果key存在且是字符串,則將value追加到key原來舊值的末尾。

如果key不存在,則將key設置爲value

get key

獲取指定key的值

getrange key start end

返回key中字符串值從start開始到end結束的子字符串

mget key1 [key2…]

獲取所有(1或多個)給定key的值

incr key

將key中存儲的數字值增1。若key不存在,則key的值先被初始化爲0,再執行incr操作(只能操作數字類型的數據)

incrby key increment

將key所存儲的值加上增量值。若key不存在,則將key的值先初始化爲0,在執行incrby命令

decr key

將key中存儲的數字值減1

decrby key decrement

將key所存儲的值減去減量值。若key不存在,則將key的值先初始化爲0,在執行decrby命令

strlen key

返回key所存儲的字符串值的長度

2. hash(哈希)

哈希類型是一個string類型的field和value的映射表,hash特別適合用於存儲對象。

hash命令

說明

hset key field value

將哈希表key中的字段field的值設爲value

hmset key field1 value1 [field2 value2…]

同時將多個field-value(域值對)設置到哈希表key中

hmsetnx key field value

將哈希表中key中的field域的值設置爲value,當且僅當field域不存在的時候才設置;否則不設置

hget key field

獲取存儲在哈希表中指定字段的值

hmget

獲取哈希表中一個或多個給定域的值

hgetall key

獲取在哈希表中指定key的所有字段和值

hdel key field1 [field2…]

刪除哈希表key中的一個或多個指定域field

hexists key field

查看哈希表key中,指定的字段是否存在

hkeys key

查看所有key中的所有field域

hvals key

查看哈希表key中所有field域的值

hlen key

獲取哈希表key中field域的數量

hincrby key field increment

爲哈希表key中指定的field域的整數值加上增量increment

hincrbyfloat key field increment

爲哈希表key中指定的field域的浮點數值加上增量increment

3. list(列表)

list是簡單的字符串列表,按照插入順序排序,值value可以重複。可以添加一個元素到列表的頭部(左邊)或尾部(右邊)

list命令

說明

lpush key value1 [value2…]

將一個或多個value插入到列表key的表頭(最左邊)

lpushx key value

將一個值value插入到已存在的列表key的表頭,列表不存在時無效

rpush key value1 [value2…]

將一個或多個value插入到列表key的表尾(最右邊)

rpushx key value

將一個值value插入到已存在的列表key的表尾,列表不存在時無效

lrange key start stop

獲取列表key中指定區間(從start開始,到stop結束)內的元素,遵循左閉右閉原則。0表示列表的第一個元素,-1表示列表的最後一個元素。

lpop key

移除並返回列表key的第一個元素

rpop key

移除並返回列表key的最後一個元素

rpoplpush source destination

移除列表key的最後一個元素,並將該元素添加到另一個列表的頭元素並返回

blpop key1 [key2] timeout

移除並獲取列表的第一個元素,如果列表沒有元素會阻塞列表直到timeout等待超時或發現可彈出元素爲止

blpop key1 [key2] timeout

移除並獲取列表的最後一個元素,如果列表沒有元素會阻塞列表直到timeout等待超時或發現可彈出元素爲止

brpoplpush source destination timeout

從列表中彈出一個值,將彈出的元素插入到另外一個列表中並返回它; 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。

 

lindex key index

獲取列表key中下表爲指定index的元素

llen key

獲取列表key的長度

lrem key count value

從左到右刪除列表key中指定個數且與指定value值相等的值

ltrim key start stop

刪除指定區域外的元素。也就是讓列表只保留指定區域(從start開始,到stop結束)內的元素,不在指定區域內的元素都將被刪除

lset key index value

將列表key中下表爲index的元素的值設置爲value

linsert key before|after pivot value

將值value插入到列表key中位於值pivot之前或之後的位置

4. set(集合)

set是string類型的無需集合。集合成員是唯一的,這就以爲着集合中不能出現重複的數據。

redis中集合是通過哈希表實現的,所以添加、刪除、查找的複雜度都是O(1)。

set命令

說明

sadd key member1 [member2…]

將一個或多個member元素加入到集合key中,已經存在於集合的member元素將不會再加入

smemebers key

獲取集合key的所有成員元素

sismember key member

判斷member元素是否是集合key的成員

scard key

獲取集合key裏面的元素個數

srem key member1 [member2…]

刪除集合key中的一個或多個member元素

srandmember key [count]

隨機返回集合中的count個元素

spop key

隨機移除並返回集合中的一個元素

smove source destination member

將member元素從source集合移動到destination集合

sinter key1 [key2…]

返回給定所有集合的交集

sinterstore destination key1 [key2…]

返回給定所有集合的交集並存儲在destination中

sdiff key1 [key2…]

返回給定所有集合的差集

sdiffstore destination key1 [key2…]

返回給定所有集合的差集並存儲在destination中

sunion key1 [key2…]

返回給定所有集合的並集

sunionstore destination key1 [key2…]

返回所有給定集合的並集並存儲在destination中

sscan key cursor [match pattern] [count count]

用於迭代集合中鍵的元素

5. zset(有序集合sorted set)

sorted set和set一樣也是string類型元素的集合,且不允許重複的成員。

不同的是每個元素都會關聯一個double類型的分數。redis正是通過分數來尾集合中的成員進行從大到小的排序。

有序集合的成員是唯一的,但分數(score)卻可以重複。

集合是通過哈希表實現的,所以添加,刪除,查找的複雜度都是O(1)。

sorted set命令

說明

zadd key score1 member1 [score2 member2…]

向有序集合key中添加一個或多個成員,或者更新已存在成員的分數

zcard key

獲取有序集合key的成員個數

zrem key member1 [member2…]

移除有序集合key中的一或多個成員

zremrangebylex key min max

移除有序集合key中給定的字典區間內(從min開始,到max結束)的所有成員

zremrangebyrank key start stop

移除有序集合key中給定的排名區間內(從start開始,到stop結束)所有的成員

zremrangebyscore key min max

移除有序集合中給定的分數區間內(從min開始,到max結束)的所有成員

zrevrange key start stop [withscores]

返回有序集合key中指定區間內(從start開始,到stop結束)的成員。通過索引,分數從高到低

zrevrangebyscore key max min [withscores]

返回有序集合key中指定區間內(從max

開始,到min結束)的成員。分數從低到高排序

zrevrank key member

返回有序集合key中指定成員member的排名,有序集合按分數值遞減排序

zscore key member

返回有序集合key中member成員的分數值

zlexcount key min max

獲取有序集合中指定字典區間內(從min開始,到max結束)的成員數量

zincrby key increment member

向有序集合key中指定成員的的分數加上增量increment

zrange key start stop [withscores]

返回有序集合中,指定索引區間內(從start開始,到stop結束)的成員

zrangebylex key min max [limit offset count]

返回有序集合中指定字典區間內(從min開始,到max結束)的成員

zrangebyscore key min max [withscores] [limit]

通過分數返回有序集合中指定區間內從min開始,到max結束)的成員

zrank key member

返回有序集合key中指定成員的索引

zinterstore destionation numkeys key1 [key2…]

返回一個或多個有序集合的交集,並將結果集存儲在新的有序集合destionation中

zunionstore destionation numkeys key1 [key2…]

返回一個或多個有序集合的並集,並將結果集存儲在新的有序集合destionation中

zscan key cursor [match pattern] [count count]

返回有序集合key中的元素(包括元素成員和元素分值)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章