key * 查看redis中的所有鍵(當鍵的數量較多會影響性能,不建議生產環境中使用) exists key 判斷一個鍵是否存在,存在返回1,否則返回0 del key [key...] 刪除一個或多個鍵,返回刪除的鍵的個數 (del命令的參數不支持通配符,但我們可以結合linux的管道和xargs ...
key * 查看redis中的所有鍵(當鍵的數量較多會影響性能,不建議生產環境中使用)
exists key 判斷一個鍵是否存在,存在返回1,否則返回0
del key [key...] 刪除一個或多個鍵,返回刪除的鍵的個數
(del命令的參數不支持通配符,但我們可以結合linux的管道和xargs命令自己實現刪除所有符合規則的鍵。比如要刪除所有以"user:"開頭的鍵,就可以執行 redis-cli keys "user:*" | xargs redis-cli del。另外由於del命令支持多個鍵作為參數,所以還可以執行 redis-cli del 'redis-cli keys "user:*"'來達到同樣的效果,而且性能更好)
基本命令
type key 獲得鍵值的數據類型
set key value 給鍵賦值
mset key1 v1 key2 v2 key3 v3 同時給多個鍵賦值
get key 取值
mget key1 key2 key3 同時獲取多個鍵值
incr num 得到num遞增後的數字,如果沒有則創建並從0加1,即得到1,如果num不是數字類型則報錯
incrby num 2 和incr類似,只不過可以指定遞增多少
incrbyfloat num 6.7 可以指定增加雙精度浮點數
decr num 得到num遞減後的數字
decrby num 2 和decr類似,只不過可以指定遞減多少
append key value 在字元串後面追加值,如果該鍵不存在即為為這個鍵賦值(該命令第二個參數需要加引號,因為有可能追加空格,所以要引起來)
strlen key 返回鍵值的長度,如果不存在返回0
散列類型
hset key field value 賦值
hget key field 取值
hmset key field1 v1 field2 v2 field3 v3 同時賦值多個
hmget key field1 field2 field3 同時獲取多個值
hgetall key 獲取全部
hset 方便之處在於不用區分是插入還是更新,統統用hset,如果不存在即插入,返回1,如果存在即更新,返回0。
在redis中每個鍵都屬於一個明確的數據類型,如通過hset命令建立的鍵是散列類型,通過set命令建立的鍵是字元串類型等。使用一種數據類型的命令操作另一種數據類型的鍵會提示錯誤。
hexists key field 該命令用來判斷一個欄位是否存在,如果存在返回1,否則返回0,如果鍵不存在也會返回0。
hsetnx key field value 當欄位不存在時賦值,和命令hset類似,只不過執行該命令如果鍵存在不做任何操作(後面的nx表示 if not exists)
hincrby key field increment 和incrby類似,可以使欄位值增加指定整數。散列類型沒有hincr命令,但是可以通過hincrby key field 1來實現
hdel key field [field...] hdel命令可以刪除一個或多個欄位,返回值是被刪除的欄位個數
hkeys key 只獲取鍵的欄位名(對象的屬性名)
hvals key 只獲得鍵的欄位值(對象的屬性值)
hlen key 獲取欄位數量
列表類型
lpush key value [value...] 從左邊往列表放數據,返回當前列表長度
rpush key value [value...] 從右邊往列表放數據,返回當前列表長度
lpop key 從最左邊移除一個元素,並且把移除的元素返回
rpop key 從最右邊移除一個元素,並且把移除的元素返回
lrange key start stop 獲取列表中的片段,索引從0開始,左右都包含,不會像lpop一樣刪除片段,支持負索引,負索引就是從右邊開始數,如果start>stop返回空列表,如果stop大於最大則返回到最後一個元素
lrem key count value lrem命令會刪除列表中前count個值為value的元素,返回值是實際刪除的元素個數。根據count值的不同,lrem命令的執行方式會略有差異:
當count>0時lrem命令會從列表左邊開始刪除前count個值為value的元素;
當count<0時lrem命令會從列表右邊開始刪除前|count|個值為value的元素;
當count=0時lrem命令刪除所有的值為value的元素。
lindex key index 返回指定索引的元素,從0開始,正數從左邊數,負數從右邊數
lset key index value 設置指定索引的值,將索引為index的元素賦值為value
ltrim key start end ltrim命令可以刪除指定索引範圍之外的所有元素,左右都包含
linsert key before|after pivot value linsert命令首先會在列表中從左到右找值為pivot的元素,然後根據第二個參數是before還是after來決定將value插入到該元素的前面還是後面
rpoplpush source destination 該命令從命名就能看出先執行rpop命令再執行lpush命令。該命令會先從source列表的右邊彈出一個元素,然後將其加入到destination列表的左邊,並返回這個元素的值,整個過程是原子的。兩個列表可以一樣,這樣的話就是迴圈的將最右邊一個元素放到最左邊。
集合類型
sadd key member [member...] 向集合中加入一個或多個元素,如果已經存在則忽略,返回成功加入的元素個數,重覆的不在計算之內
srem key member [member...] 刪除一個或多個元素,返回刪除成功的個數
smembers key 返回集合中的所有元素
sismember key member 判斷一個元素在集合中是否存在,存在返回1,不存在或鍵不存在返回0,無論集合中有多少元素,該命令始終可以極快的返回結果
sdiff key [key...] 計算集合的差集,集合A與集合B的差集表示為A-B,代表所有屬於A且不屬於B的元素構成的集合,支持同時傳多個,比如A B C應先計算A和B的差集,再計算結果與C的差集
sinter key [key...] 計算集合的交集,代表同時屬於集合A和集合B的元素構成的集合,支持同時傳多個,即屬於所有集合的元素構成的集合
sunion key [key...] 計算集合的並集,代表屬於集合A或屬於集合B的元素構成的集合,支持同時傳多個,即屬於任何一個集合的元素構成的集合
scard key 該命令用來獲得集合中的元素個數
sdiffstore destination key [key...] 和sdiff命令功能一樣,區別在於前者不會直接返回運算結果,而是將結果存儲在destination中,常用於需要進行多步集合運算的場景中,如需要先計算差集再將結果和其他鍵計算交集
sinterstore destination key [key...] 性質同上
sunionstore destination key [key...] 性質同上
srandmember key [count] 該命令用來從集合中獲取一個元素,還可以傳遞count參數來一次隨機獲得多個元素,根據count的正負不同,具體表現也不同:
當count為正數時,會隨機從集合里獲得count個不重覆的元素;
當count為負數時,會隨機從集中里獲得|count|個元素,有可能相同;
spop key 從集合中隨機彈出一個元素,並刪除,返回彈出的元素
有序集合類型
這裡的有序並不是按加入集合的順序排序,而是有序集合會有一個分數,根據這個分數排序
zadd key score member [score member...] 該命令用來向有序集合中加入一個元素和該元素的分數,如果該元素已經存在則會用新的分數替換原有的分數。返回新加入到集合中的元素個數,不包含之前已經存在的元素。(+inf和-inf分別表示正無窮和負無窮)
zscore key member 獲得元素的分數
zrange key start stop [withscores] 該命令會按照元素分數從小到大的順序返回索引從start到stop之間的所有元素,同樣的從0開始,包括兩端,支持負數,如果在尾部加上參數withscores,會同時獲得元素的分數。如果分數相同會按照ASCLL碼排序
zrevrange key start stop [withscores] 從大到小排序
zrangebyscore key min max [withscores] [limit offset count] 該命令按照元素分數從小到大的順序返回分數在min和max之間(包含兩端)的元素,如果希望分數範圍不包含端點值,可以在分數前加上"("符號,同樣支持負無窮(-inf)和正無窮(+inf),加上withscores參數會同時返回元素分數,後面可以加上參數limit,使用方法和mysql相同。
zrevrangebyscore key min max [withscores] [limit offset count] 按照元素分數從大到小的順序排序,需要註意的是該命令的min和max的參數順序是相反的。
zincrby key increment member 該命令可以增加一個元素的分數,返回值是更改後的分數,可以是負數即減分,如果元素不存在會先添加元素分數為0,再加上該分數。
zcard key 獲得集合中元素的數量
zcount key min max 獲得指定分數範圍內的元素個數(min和max參數的特性和前面的一樣)
zrem key member [member...] 刪除一個或多個元素,返回成功刪除的元素數量
zremrangebyrank key start stop 按照元素分數從小到大的順序刪除處在指定排名範圍內的元素,並返回刪除的元素數量。
zremrangebyscore key min max 刪除指定分數範圍內的所有元素(min和max參數的特性和前面的一樣)並返回刪除的元素數量。
zrank key member 按照元素分數從小到大的順序獲得指定的元素的排名
zrevrank key member 按照元素分數從大到小的順序獲得指定的元素的排名
zinterstore destination numkeys key [key...] [weights weight [weight...]] [aggregate sum|min|max] 該命令用來計算多個有序集合的交集並將結果存儲在destination鍵中(同樣以有序集合類型存儲),返回值為destination鍵中的元素個數。
destination鍵中的元素分數是由aggregate參數決定的:
當aggregate是sum時(也就是預設值),destination鍵中元素的分數是每個參與計算的集合中該元素分數的和;比如集合A:1 a 2 b 3 c,集合B:10 a 20 b,則結果為集合:11 a 22 b
當aggregate是min時,destination鍵中的元素的分數是每個參與計算的集合中元素分數的最小值;比如集合A:1 a 2 b 3 c,集合B:10 a 20 b,則結果為集合:1 a 2 b
當aggregate是max時,destination鍵中的元素的分數是每個參與計算的集合中元素分數的最大值;比如集合A:1 a 2 b 3 c,集合B:10 a 20 b,則結果為集合:10 a 20 b
該命令還能夠通過weights參數設置每個集合的權重,每個集合在參與計算時元素得分數會被乘上該集合的權重。例如執行以下命令:
zinterstore destination 2 A B weights 1 0.1
過程是A中元素乘以1,B中元素乘以0.1,然後再求交集,則結果為集合:(1*1+10*0.1)= 2 a (2*1+20*0.1)= 4 b
zunionstore 該命令為計算集合中的並集,性質同上