Redis命令

Redis命令

基本命令

Redis對於鍵的命名並沒有強制的要求,推薦使用“對象類型:對象ID:對象屬性”來命名一個鍵,如user:1:name 來存儲用戶名 
獲取所有的鍵名 
$ KEYS *
Redis 鍵名通配符規則 
? 匹配一個字符 
* 匹配任意個字符 
[] 匹配中擴號間的任意字符,可以使用”-“表示一個範圍,如a[b-d] 
\x 用於轉義字符,如需要匹配“?”,就要使用\? 

set命令建立一個num的鍵,並且設置值爲1 
$ SET num 1

讀取num的值 
$ GET num

判斷一個鍵名 是否存在,存在返回1,不存在返回0 $ EXISTS key

刪除一個或多個鍵,返回值是刪除鍵的個數 
$ DEL key [key …]

*DEL命令的參數不支持通配符,可以使用Linux的管道和xargs命令實現刪除所有符合規則的鍵。 
如要刪除所有“user:”開始的鍵: 
redis-cli KEYS “user:*” | xargs reds-cli DEL 

type命令獲取健值的數據類型(string,hash,list,set,zset) 
$ TYPE key

向指定的列表類型中增加一個元素,如果鍵不存在就創建它。 $ LPUSH 

累加1 
$ INCR counter 

加上指定整數 
$ INCRBY counter 10

累減1 
$ DECR counter

減去指定數10 
$ DECRBY counter 10

加上指定浮點數
$ INCRBYFLOAT counter 1.5

減去指定浮點數 
$ DECRBYFLOAT counter 1.5

向尾部追加值,如果鍵不存在則SET 
$ APPEND key value

獲取字符串長度(UTF-8編碼的長度都是3) 
$ STRLEN key

同時獲取多個鍵值 
$ MGET key [key …]

同時設置多個鍵值
$ MSET key value [key value …] 

位操作

獲得一個字符串型鍵指定位置的二進制的值(0或1),超出長度的返回0 
$ GETBIT key offset 

設置一個字符串型鍵指定位置的二進制的值,返回該位置的舊值,如果當前鍵值的長度小於二進制位的偏移量,Radis會自動分配內存並將健值的當前長度到偏移量的位置都設置爲0 
$ SETBIT key offset value 

獲得一個字符串型鍵中值是1的二進制個數,通過start,end參數限制統計範圍 
$ BITCHOUNT key [start] [end]

BITOP命令對多個字符串類型健進行位運算,並將結果存在destkey參數指定的鍵中。BITOP命令支持的運算操作有and,or,xor和not 
$ BITOP operation destkey key [key …] 

獲得指定鍵的第一個位置是0或1的位置,類似於indexof 
$ BITPOS key 0|1 [start] [end]

散列類型

$ HSET key field value 
$ HGET key field 
$ HMSET key field value [field value …] 
$ HMGET key field [field …] 
$ HGETALL key 
$ HEXISTS key field 判斷字段是否存在 
$ HSETNX key field value 當字段不存在時賦值 
$ HINCRBY key field increment 
$ HDEL car price 
$ HKEYS key 只獲取字段名 
$ HVALS key 只獲取字段值 
$ HLEN key 獲得字段數量 

HSET命令不區分插入和更新操作,當鍵不存在會自動創建,當執行插入操作會返回1,更新插作返回0。 
示例: 
$ HSET car:1 price 500 
$ HSET car:1 color red 
$ HSET car:1 name bmw 
等價於 
$HMSET car:1 price 500 color red name bmws 

$ HGET car:1 price 
$ HMGET car price name color 
$ HGETALL car:1 

判斷字段是否存在 
$ HEXISTS car:1 price 

不存在price就保存 
$ HSETNX car:3 price 500

price+2,,要減的時候increment可以是負數 
$ HINCRBY car:3 price 2 

列表類型

可以存儲一個有序的字符串列表,內部是使用的雙向鏈表實現的。所以向兩端插入數據極快。 
向列表左邊增加元素 
$ LPUSH key value [value …] 

向列表右邊增加元素 
$ RPUSH key value [value …]

彈出左邊第一個元素,先移除最左邊第一個元素,再返回該元素值 
$ LPOP name

彈出右邊第一個元素,先移除最右邊第一個元素,再返回該元素值 
$ RPOP name

獲取列表元素個數 
$ LLEN key

獲取列表中的一段,將返回start到stop之間的元素,包含start和stop元素,不會像LPOP一樣刪除該元素 
支待負索引,表示從右邊開始計算,-1表示右邊第一個無素,-2表示右邊第二個元素,LRANGE key o -1 可以獲取列表中的所有元素 
$ LRANGE key start stop

刪除列表中前count個值爲value的元素,返回實際刪除的個數 
$ LREM key count value

返回指定index位置的元素,index從0開始計算 
$ LINDEX key index

將索引號爲index位置的元素重新賦值爲value,如果index不存在報(index out of range) 
$ LSET key index value

只保留列表指定位置間的數據 
$ LTRIM key start end

向列表中插入元素,首先在列表中查找值爲pivot的元素,然後根據第二個參數before|after決定插入位置 
$ LINSERT key BEFORE|AFTER pivot value 

將元素從一個列表轉到另一個列表 
$ RPOPLPUSH source destination

示例: 
$ LPUSH mame name1 
$ LPUSH name name0 
$ RPUSH name name2 
$ RPUSH name name3 name4 
$ LRANGE name 0 2 
$ LRANGE name 0 -1 
$ LINDEX name 2 
$ LSET name 2 name3-lset 

集合類型

對比 集合 列表 
有序性 否 是
唯一性 是 否 

向集合中添加一個或多個元素,如果key不存在就會自動創建,因爲不能重複,如果元素已經存在就會忽略,返回成功加入的數量,忽略的不計算在內 
SADD key member [member…] 

從集合中刪除元素 
SREM key member [member…] 

獲得集合中所有元素 
SMEMBERS key 

判斷一個元素是否存在於key中,存在返回1,不存在時返回0 
SISMEMBER key member 

對多個集合執行差集運算,支持多個集合計算,(找不存在的) SDIFF key [key …] 

對多個集合執行交集運算,(找相同的) 
SINTER key [key…] 

對多個集合執行並集運算,(合併) SUNION key [key…] 

獲取集合中元素個數 SCARD key 

進行集合運算並將結果存入destination 
SDIFFSTORE destination key [key …] 
SINTERSTORE destination key [key …] 
SUNIONSTORE destination key [key …] 

隨機獲得集合中的元素 
SRANDMEMBER key [count] 
*如果有count參數,表示隨機獲得集合中的count個元素 
*如果count爲負數,取絕對值,可以大於元素總個數,返回的元素可能會重複 
*如果count爲正數,大於集合的元素個數,返回集合全部內容。不會返回重複的元素 

從集合中彈出一個元素 
SPOP key 

有序集合

向有序集合中加入一個元素和該元素的分數。如果存在則替換原分數。返回新增元素個數 
ZADD key score member [score member…] 

刪除元素 
ZREM key member [member…] 

獲得元素分數 
ZSCORE key member

獲得排名在某個範圍內的元素列表,從小到大排序,[WITHSCORE]表示同時返回元素的分數 
ZRANGE key start stop [WITHSCORE] 

從大到小排序 
ZREVRANG key start stop [WITHSCORE] 

獲得指定分數範圍的元素從小到大排序 ZRANGEBYSCORE key min max [WITHSCORE] [LIMIT offset count] 

獲得指定分數範圍的元素從大到小排序 
ZREVRANGEBYSCORE

增加某個元素的分數
INCRBY key increment member

獲得某個集合中元素數量 
ZCARD key

獲得指定分數範圍內的元素個數 
ZCOUNT key min max

按照排名範圍刪除元素 
ZREMRANGEBYRANK key start stop

按照分數範圍刪除元素 
ZREMRANGEBYSCORE key min max

獲得元素排名從小到大 
ZRANK key member

獲得元素排名,從大到小 
ZREVRANK key member

計算有序集合的交集,並把結果存入destination 
ZINTERSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX] 

*AGGREGATE 是 SUM 時,destination鍵中元素的分數是每個參與計算的集合中該元素分數的合 
*MIN|MAX 時,destination鍵中元素的分數是每個參與計算的集合中該元素的最小值或最大值 
*WEIGHTS 設置每個集合的權重,每個集合在參與計算時元素的分數會被乘上該集合的權重 

計算有序集合的並集 
ZUNIONSTORE … 

-inf 負無窮 
+inf 正無窮 
(score 返回結果不包含值爲score的元素 
Limit offset count 和sql中的用法基本相同 
socre 可以是雙精度浮點數 

事務transaction

MULTI 
SADD … 
SADD …
EXEC

*其中某條語法錯誤,執行後會返回錯誤信息,所有命令都不會執行 
*運行錯誤,在執行之前是沒法發現的,如果出現該錯誤,其它命令依然會被執行 
*Redis沒有事務回滾的功能 

WATCH 命令可以監控一個或多個鍵,一旦其中有一個鍵被修改或修除,之後的事務就不會執行。監控一直持續到EXEC命令。
UNWATCH 命令取消監控 

過期時間

設置一個key的過期時間,單位爲秒,到時間後Redis會自動刪除它。返回1表示設置成功,0表示鍵不存在或設置失敗
EXPIRE key seconds 

設置時間單位爲毫秒 
PEXPIRE key milliseconds 

查看一個鍵的過期時間,當鍵不存在時會返回-2,查看永久存在的鍵,返回-1 
TTL key
PTTL key 

使用Unix時間做爲第二個參數 
EXPIREAT key timestamp 
PEXPIREAT key timestamp 

取消鍵的過期時間設置,成功返回1,失敗返回0 
PERSIST key 
*當對key重新set值的時候會清除了過期時間,但incr,lpush,hset,zrem等對值操作的命令不會影響過時間。 
*使用watch監控一個鍵,如果該鍵過期被清除,不會被認爲該鍵被改變 

SORT排序

SORT命令可以對列表類型list,集合類型set和有序集合zset類型鍵進行排序 
SORT key 

示例: 
LPUSH lname1 1 4 6 2 5 
SORT lname1 

SADD name1 19 35 14 09 35 14 42 46 
SORT name1 

*對有序集合類型排序的時候會忽略元素的分數,只針對元素自身的值進行排序。 
按照字典順序排列非數字元素,desc元素從大到小排序,默認從小到大排序,limit 指定返回範圍 
SORT key ALPHA DESC LMIT 1 2 

BY參數

by參數的語法爲by 參考鍵,其中參考鍵可以是字符串類型鍵或是散列類型鍵的某個字段(表示爲鍵名→字段名),如果提供了BY參數,SORT命令將不再依據元素自身的值進行排序,而是對每個元素的值替換爲參考鍵中的第一個 “*”並獲取其值,然後依據該值對元素排序。 

參考鍵爲散列類型語法 
SORT key BY 對象類型:*→字段名 DESC 

參考鍵爲字符串類型語法 
LPUSH sortbylist 2 1 3 
SET id:1 50 
SET id:2 100 
SET id:3 70 

redis> SORT sortbylist by id:* DESC 

redis> SORT sortbylist BY id:* DESC GET id:* GET # 
GET參數不影響排序,它的作用是使SORT命令的返回結果不再是元素自身的值,GET參數的規則和BY參數一樣,GET也支持字符串類型和散列類型的鍵,並使用*作爲佔位符。一個SORT命令中可以有多個GET參數而BY參數只能一個。GET # 會返回元素本身的值。 

store key:將結果保存在key鍵中,保存後鍵的類型爲列表類型,如果存在則覆蓋。返回sort結果的個數 
redis> SORT sortbylist BY id:* DESC GET id:* GET # STORE key 

任務隊列,BRPOP|BLPOP命令與RPOP命令相比,唯一的區別是當列表中沒有元素是時BRPOP命令會一直阻塞住連接,直到有新元素加入。 
BRPOP命令接收兩個參數,第一個是鍵名,第二個是超長時間,單位是秒。當超時返回nil。參數爲0時表示不限制時長。返回鍵名和元素值。 
可以設置多個key.會從左至右的優先順序取第一個鍵中的一個元素 
BLPOP key1 [key2 …] 0 

發佈/訂閱

返回值爲收到該條消息的訂閱者數量 
PUBLISH channel message 
redis> PUBLISH channel1.1 hi 

訂閱頻道,可以同時訂閱多個頻道 
SUBSCRIBE channel [channel…] 
執行SUBSCRIBE命令後客戶端會進入訂閱狀態,處理些狀態下客戶端不能使用除SUBSCRIBE,UNSUBSCRIBE,PSUBSCRIBE,PUNSUBSCRIBE外的命令 

通配符匹配訂閱規則 SUBSCRIBE channel.?* 

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