字元串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>0,從左到右,删除最多count個元素。
count<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。
今天你進步了嗎?