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中的元素(包括元素成員和元素分值) |