這篇文章為大家帶來了關於Redis的相關知識,其中主要整理了有序集合的相關問題,有序的集合,每個元素都由一個成員和一個與成員相關聯的分值組成,成員以字符串存儲,分值以64位雙精度浮點數存儲,下面一起來看一下,希望對大家有幫助。
推薦學習:Redis影片教學
有序的集合。每個元素都由一個成員和一個與成員相關聯的分數組成,成員以字串存儲,分值以64位元雙精度浮點數存儲。成員不可重複,以分數大小排序,相同分值時以成員字典序排序。
新增或更新成員
1.zadd指令 格式:zadd key [NX|XX] [GT|LT] [CH] [INCR] score member [score member …]
傳回新增成功的新成員數量,若執行的是更新成員分數回傳0。 zadd key score member [score member ...]
# XX選項的作用是只更新不添加,執行後返回0。 zadd key XX score member [score member ...]
# NX選項的功能是只新增不更新,執行成功傳回新增元素的數量。 zadd key NX score member [score member ...]
# CH選項的作用是傳回被修改成員的數量而非新增成功的成員數量,被修改包括新新增。 zadd key CH score member [score member ...]
#移除指定成員
1.zrem指令格式:zrem key member [member …]
傳回移除成員的數量,成員不存在於集合中時自動忽略。 zrem key member [member ...]
2.zremrangebyrank指令 格式:zremrangebyrank key start stop
移除指定排名範圍內的成員,傳回移除成員的數量,排名可使用正數排名或負數排名。 zremrangebyrank key start stop
3.zremrangebyscore指令 格式:zremrangebyscore key min max
移除指定分值範圍內的成員,傳回被移除成員的數量。 min或max前加「(」表示取開區間即不包含邊界值。zremrangebyscore key min max
4.zremrangebylex指令 格式:zremrangebylex key min max
對於依照字典序排列的有序集合(即分數相同),移除指定字典序範圍內的成員。傳回被移除成員的數量,min、max的可取值包括:帶有“[”的值表示包含字典序邊界,帶“(”表示不包含字典序邊界,“ ”表示無窮大,“-”表示無窮小。zremrangebylex key min max
彈出元素
1.zpopmax指令 格式:zpopmax key [count]
彈出分數最高的count個成員,分值最高有多個元素時彈出字典序最大的成員,若未指定count預設1個,執行完成後傳回被彈出元素的成員和分數值。 zpopmax key [count]
2.zpopmin指令 格式:zpopmin key [count]
彈出分值最低的count個成員,分值最低有多個元素時彈出字典序最小的成員,若未指定count預設1個,執行完成後傳回被彈出元素的成員和分值。 zpopmin key [count]
3.bzpopmax指令 格式:bzpopmax key [key …] timeout
阻塞式的zpopmax指令,timeout為秒級精確度。命令依序檢查給定的有序集合,並從第一個非空集合彈出分數最大的元素,否則阻塞當前客戶端直到有元素或超出逾時時間返回nil。成功彈出元素時將傳回一個列表,包含被彈出元素所在有序集合、成員以及分數。 bzpopmax key [key ...] timeout
4.bzpopmin指令 格式:bzpopmin key [key …] timeout
# 阻塞式的zpopmin指令,timeout為秒級精度。命令依序檢查給定的有序集合,並從第一個非空集合彈出分值最小元素,否則阻塞當前客戶端直到有元素或超出逾時時間返回nil。成功彈出元素時將傳回一個列表,包含被彈出元素所在有序集合、成員以及分數。 bzpopmin key [key ...] timeout
客戶端2:
1.zscore指令 格式:zscore key member
取得給定成員的分值,集合不存在或成員不存在時傳回nil。
zscore key member
1.zincrby指令 格式:zincrby key increment member
執行完後傳回目前成員分值,increment為正時自增,否則為自減;若鍵不存在或成員不存在則執行建立操作。
zincrby key increment member
1.zcard指令 格式:zcard key
傳回集合包含的成員數量,集合不存在時傳回0。
zcard key
2.zcount指令 格式:zcount key min max
取得指定分值範圍內的成員數量,min或max前加「( 」表示取開區間即不包含邊界值,值inf表示無窮大,-inf表示無窮小。
zcount key min max
3.zlexcount指令 格式:zlexcount key min max
對於依照字典序排列的有序集合(即分數相同),取得指定字典序範圍內的成員數量,min、max的
可取值包括:帶「[ 」的值表示包含字典序邊界,帶「(」表示不包含字典序邊界,「 」表示無窮大,「-」表示無窮小。
zlexcount key min max
1.zrank指令 格式:zrank key member
傳回成員的升序排列排名,集合或成員不存在時傳回nil。
zrank key member
2.zrevrank指令 格式:zrevrank key member
傳回成員的降序排列排名,集合或成員不存在時傳回nil。
zrevrank key member
取得成員
1.zrange指令 格式:zrange key min max [BYSCORE|BYLEX] [REV] [LIMIT offset count] [WITHSCORES]
取得指定索引範圍內的成員,按分值大小升序排列。 WITHSCORES選項可在指令執行後傳回分值,傳回清單奇數位為成員,偶數位為對應分值。集合不存在時返回empty。 zrange key min max [WITHSCORES]
# 2.zrevrange指令 格式:zrevrange key start stop [WITHSCORES]
取得指定索引範圍內的成員,按分值大小降序排列。 WITHSCORES選項可在指令執行後傳回分值,傳回清單奇數位為成員,偶數位為對應分值。集合不存在時返回empty。 zrevrange key start stop [WITHSCORES]
3.zrangebyscore指令 格式:zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
取得指定分值值範圍內的成員,依分值大小升序排列。 WITHSCORES選項可在指令執行後傳回分值,傳回清單奇數位為成員,偶數位為對應分值。集合不存在時返回empty。 zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
[LIMIT offset count]選項的作用是限制傳回的成員數量,offset指定需要跳過的成員數量,count執行最多回傳成員的數量,count為負時取絕對值。
min或max前加上「(」表示取開區間即不包含邊界值,值inf表示無窮大,-inf表示無窮小。
4.zrevrangebyscore指令格式:zrevrangebyscore key max min [WITHSCORES] [LIMIT offset count]
取得指定分值範圍內的成員,按分值大小降序排列,注意max min順序。zrevrangebyscore key max min [WITHSCORESRES ] [LIMIT offset count]
5.zrangebylex指令 格式:zrangebylex key min max [LIMIT offset count]
當成員分值相同時,取得指定字典序範圍內成員,依字典序升序排列,min、max的可取值包括:帶「[」的值表示包含字典序邊界,帶「(」表示不包含字典序邊界,「」表示無窮大,「-」表示無限小。zrangebylex key min max [LIMIT offset count]
6.zrevrangebylex指令 格式:zrevrangebylex keymax min [ LIMIT offset count]
當成員分值相同時,取得指定字典序範圍內成員,依字典序降序排列,max、min的可取值包括:帶「[」的值表示包含字典序邊界,帶「(」表示不包含字典序邊界,「 」表示無窮大,「-」表示無窮小。zrevrangebylex key max min [LIMIT offset count]
集合運算
1.並集
1)zunionstore指令 格式:zunionstore destination numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
numkeys為參與運算的集合數量,不對應時傳回error,執行完後傳回新集合的成員數。並集得到的為成員集合,若參與運算的集合中有相同成員,則預設新集合的成員分數為原集合成員分數相加。 zunionstore destination numkeys key [key ...]
# AGGREGATE選項功能是指定使用的聚合函數,不指定時預設SUM。 SUM指分值相加,MIN指取最小分值,MAX指取最大分值。 zunionstore destination numkeys key [key ...] [AGGREGATE SUM|MIN|MAX]
WEIGHTS 選項作用是執行聚合前為每個集合分別設定一個權重,權重分別與集合中成員分數相乘得到新分值,然後執行聚合計算。
2)zunion指令 格式:zunion numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]
執行完成後傳回新集合成員。 zunion numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]
2.交集
1)zinterstore指令 格式:zinterstore destination numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
執行完後傳回新集合的成員數量。 zinterstore destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
2)zinter指令 格式:zinter numkeys key [key …] [WEIGHTS weight ] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]
執行完後傳回新集合成員。 zinter numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]
##注意#: 1.集合運算可以使用集合作為輸入,預設情況下,集合成員的分值看做1參與運算,可使用WEIGHTS選項設定權重改變集合分值。
1.排行榜
2.時間軸
以上是Redis有序集合使用知識點歸納的詳細內容。更多資訊請關注PHP中文網其他相關文章!