天天看點

redis3常用指令

字元串set

ex seconds:為鍵設定秒級過期時間。

px milliseconds:為鍵設定毫秒級過期時間。

nx:鍵必須不存在,才可以設定成功,用于添加。

xx:與nx相反,鍵必須存在,才可以設定成功,用于更新。

redis還提供了setex和setnx

​ demo證明 <code>nx、xx</code>的差別

​ 即 <code>nx</code>僅當key不存在時才可set(應用于分布式鎖),<code>xx</code>僅當key存在才可set

​ k為key長度

​ 從0自增,且為單線程無cas開銷

​ 還提供decr(自減)、incrby(自增指定數字)、 decrby(自減指定數字)、incrbyfloat(自增浮點數)[o(1)]

​ 向字元串尾部追加值

​ redis中每個中文占用3個位元組

​ n為字元串長度

哈希h

​ k為field總數

​ 傳回結果為成功删除field的個數

​ n為field總數

清單l

​ k是元素個數

​ n是target_val距離清單頭或尾的距離

​ s是start的偏移量,n是start到end的範圍

索引下标從左到右分别是0到n-1,但是從右到左分别是-1到-n。

lrange中的end選項包含了自身

​ n是索引偏移量

count&gt;0,從左到右,删除最多count個元素。

count&lt;0,從右到左,删除最多count絕對值個元素。

count=0,删除所有。

​ n是要儲存元素的個數,即 end - start + 1

​ timeout:阻塞時間(機關:秒)

清單為空

如果為0,則一直阻塞。

如果此期間添加了資料,用戶端立即傳回

清單不為空

用戶端會立即傳回。

如果是多個鍵,那麼brpop會從左至右周遊鍵,一旦有一個鍵能彈出元素,用戶端立即傳回

如果多個用戶端對同一個鍵執行brpop,那麼最先執行brpop命 令的用戶端可以擷取到彈出的值。

(此特性可用于釋出訂閱)

集合s

​ 傳回結果為添加成功的元素個數

​ 傳回結果為成功删除元素個數

​ 直接用 redis内部的變量,不會周遊集合所有元素

smembers和lrange、hgetall都屬于比較重的指令,如果元素過多存在阻 塞redis的可能性,這時候可以使用sscan來完成

有序集合z

redis3.2為zadd指令添加了nx、xx、ch、incr四個選項:

nx:member必須不存在,才可以設定成功,用于添加。

xx:member必須存在,才可以設定成功,用于更新。

ch:傳回此次操作後,有序集合元素和分數發生變化的個數

incr:對score做增加,相當于後面介紹的zincrby。

有序集合相比集合提供了排序字段,但是也産生了代價,zadd的時間 複雜度為o(log(n)),sadd的時間複雜度為o(1)

​ min和max還支援開區間(小括号)和閉區間(中括号),-inf和 +inf分别代表無限小和無限大

destination:交集計算結果儲存到這個鍵。

numkeys:需要做交集計算鍵的個數。

key[key...]:需要做交集計算的鍵。

weights weight[weight...]:每個鍵的權重,在做交集計算時,每個鍵中 的每個member會将自己分數乘以這個權重,每個鍵的權重預設是1。

aggregate sum|min|max:計算成員交集後,分值可以按照sum(和)、 min(最小值)、max(最大值)做彙總,預設值是sum。

今天你進步了嗎?

繼續閱讀