事務
multi ... exec? 之間的操作先進入等待隊列,到exec時一起執行
??????????????? 事物的所有操作結果都是一起返回的,所以前一條指令的結果無法作為后一條指令的參數
?? ??? ??? ??? ?其中的指令有語法錯誤時,都不執行;有“類型不匹配”等邏輯錯誤時,只執行對的指令;沒有回滾
?? ??? ??? ??? ?
watch 監控一個或多個key 一旦監控的鍵值有修改,其后的事務就不執行
?? ??? ?監控范圍:從開始監控到事務執行之前(實際上是從watch到exec,
?? ??? ??? ??? ?但是由于multi...exec之間的指令是在exec這個點一起執行的,所以看上去是從watch到multi)
?? ??? ??? ??? ?
?? ??? ??? ??? ?
生存時間
expire key seconds 設置key的生存時間為seconds秒(該鍵在seconds秒后自動刪除)
ttl key 查看鍵key的剩余生存時間
persist key 該鍵持久化
##在生存時間相關的指令前加p(pexpire pttl),時間單位變為毫秒
expireat key unixtime 設置該鍵在unixtime時自動刪除
可以設置在內存到達規定時,鍵的自動刪除策略
?? ?{如:對所有鍵執行LRU;對設置了生存時間的鍵執行LRU;在內存滿了時報錯;對所有鍵隨機刪除;對設置了生存時間的鍵隨機刪除}
排序
sort s/l/z 返回從小到大的序列(有序集合是對元素自身的值進行排列)(若元素是純字符串,報錯)
sort s/l/z ALPHA 按字典序輸出純字符串
加 DESC 參數? 倒序輸出
加 limit 1 2 參數 帶偏移量 輸出數量
加 by (by 后可接 String、hashmap)
?? ?形如:sort s/l/z by item:*->time?? *是將sort序列循環一遍代替* ->是按hashmap中time排序
?? ??? ??? ?sort s/l/z by item:*?? 字符串
?? ?注:當要排序值相等時 按元素自身值排序 不存在該排序值默認為0
by后面可加get(可加多個)#代表循環值
?? ?形如:sort tag:ruby:posts by post:*->time DESC
?? ??? ??? ?get post:*->time get #
?? ?
get后可加store?? 將結果保存在列表中,并返回列表長度
?? ?形如:sort tag:ruby:posts by post:*->time DESC
?? ??? ??? ?get post:*->time get # store sort:result
sort很容易成為性能瓶頸 O(n+mlogm)n為要排序的數據總量 m為要返回的個數
消息通知
brpop lkeyA [lkeyB ...] time (time為等待時長,0為無限等待 )
?? ?當多個等待隊列都沒有值時,等待,若等了time還沒值,就返回nil
?? ?當都有值時,前面的隊列 優先取
?? ?返回值是個數組? [0]為返回隊列的名稱 [1]返回的內容
訂閱、發布模式
發布消息:public channel message 返回值為收到消息者的數量
訂閱頻道:subscribe channel (可以訂閱多個頻道,進入訂閱模式后,只能使用訂閱相關指令)
訂閱模式三種返回值:
?? ??? ?“subscribe” “頻道名稱” “你共訂閱了幾個頻道”
?? ??? ?“message”? “頻道名稱”?? “消息內容”
?? ??? ?“unsubscribe”? “頻道名稱”? “你剩余幾個頻道”
unsubscribe [channel ...] 若未指定 頻道名 會取消訂閱所有頻道
還可以訂閱一類頻道 如:psubscribe item:*
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
