redis之Set(有序)类型常用方法总结
redis之Set(有序)類型常用方法總結(jié)
存--ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
- XX: 僅僅更新存在的成員,不添加新成員。
- NX: 不更新存在的成員。只添加新成員。
- CH: 修改返回值為發(fā)生變化的成員總數(shù),原始是返回新添加成員的總數(shù) (CH 是 changed 的意思)。更改的元素是新添加的成員,已經(jīng)存在的成員更新分?jǐn)?shù)。 所以在命令中指定的成員有相同的分?jǐn)?shù)將不被計(jì)算在內(nèi)。注:在通常情況下,
ZADD返回值只計(jì)算新添加成員的數(shù)量。 - INCR: 當(dāng)
ZADD指定這個(gè)選項(xiàng)時(shí),成員的操作就等同ZINCRBY命令,對(duì)成員的分?jǐn)?shù)進(jìn)行遞增操作。
取--ZRANGE key start stop [WITHSCORES]
ZADD key score1 member1 [score2 member2] 向有序集合添加一個(gè)或多個(gè)成員,或者更新已存在成員的分?jǐn)?shù)
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 1 "uno"
(integer) 1
redis> ZADD myzset 2 "two" 3 "three"
(integer) 2
redis> ZRANGE myzset 0 -1 WITHSCORES
1) "one"
2) "1"
3) "uno"
4) "1"
5) "two"
6) "2"
7) "three"
8) "3"
redis>
ZCARD key 獲取有序集合的成員數(shù)
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZCARD myzset
(integer) 2
redis>
ZCOUNT key min max 計(jì)算在有序集合中指定區(qū)間分?jǐn)?shù)的成員數(shù)
redis 127.0.0.1:6379> ZADD myzset 1 "hello"
(integer) 1
redis 127.0.0.1:6379> ZADD myzset 1 "foo"
(integer) 1
redis 127.0.0.1:6379> ZADD myzset 2 "world" 3 "bar"
(integer) 2
redis 127.0.0.1:6379> ZCOUNT myzset 1 3
(integer) 4
ZINCRBY key increment member 有序集合中對(duì)指定成員的分?jǐn)?shù)加上增量 increment
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZINCRBY myzset 2 "one"
"3"
redis> ZRANGE myzset 0 -1 WITHSCORES
1) "two"
2) "2"
3) "one"
4) "3"
redis>
ZINTERSTORE destination numkeys key [key ...] 計(jì)算給定的一個(gè)或多個(gè)有序集的交集并將結(jié)果集存儲(chǔ)在新的有序集合 key 中
# 有序集 mid_test
redis 127.0.0.1:6379> ZADD mid_test 70 "Li Lei"
(integer) 1
redis 127.0.0.1:6379> ZADD mid_test 70 "Han Meimei"
(integer) 1
redis 127.0.0.1:6379> ZADD mid_test 99.5 "Tom"
(integer) 1 # 另一個(gè)有序集 fin_test
redis 127.0.0.1:6379> ZADD fin_test 88 "Li Lei"
(integer) 1
redis 127.0.0.1:6379> ZADD fin_test 75 "Han Meimei"
(integer) 1
redis 127.0.0.1:6379> ZADD fin_test 99.5 "Tom"
(integer) 1 # 交集
redis 127.0.0.1:6379> ZINTERSTORE sum_point 2 mid_test fin_test
(integer) 3 # 顯示有序集內(nèi)所有成員及其分?jǐn)?shù)值
redis 127.0.0.1:6379> ZRANGE sum_point 0 -1 WITHSCORES
1) "Han Meimei"
2) "145"
3) "Li Lei"
4) "158"
5) "Tom"
6) "199"
ZLEXCOUNT key min max 在有序集合中計(jì)算指定字典區(qū)間內(nèi)成員數(shù)量
redis 127.0.0.1:6379> ZADD myzset 0 a 0 b 0 c 0 d 0 e
(integer) 5
redis 127.0.0.1:6379> ZADD myzset 0 f 0 g
(integer) 2
redis 127.0.0.1:6379> ZLEXCOUNT myzset - +
(integer) 7
redis 127.0.0.1:6379> ZLEXCOUNT myzset [b [f
(integer) 5
ZRANGE key start stop [WITHSCORES] 通過索引區(qū)間返回有序集合成指定區(qū)間內(nèi)的成員
redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES # 顯示整個(gè)有序集成員
1) "jack"
2) "3500"
3) "tom"
4) "5000"
5) "boss"
6) "10086" redis 127.0.0.1:6379> ZRANGE salary 1 2 WITHSCORES # 顯示有序集下標(biāo)區(qū)間 1 至 2 的成員
1) "tom"
2) "5000"
3) "boss"
4) "10086" redis 127.0.0.1:6379> ZRANGE salary 0 200000 WITHSCORES # 測(cè)試 end 下標(biāo)超出最大下標(biāo)時(shí)的情況
1) "jack"
2) "3500"
3) "tom"
4) "5000"
5) "boss"
6) "10086" redis > ZRANGE salary 200000 3000000 WITHSCORES # 測(cè)試當(dāng)給定區(qū)間不存在于有序集時(shí)的情況
(empty list or set)
ZRANGEBYLEX key min max [LIMIT offset count] 通過字典區(qū)間返回有序集合的成員
redis 127.0.0.1:6379> ZADD myzset 0 a 0 b 0 c 0 d 0 e 0 f 0 g
(integer) 7
redis 127.0.0.1:6379> ZRANGEBYLEX myzset - [c
1) "a"
2) "b"
3) "c"
redis 127.0.0.1:6379> ZRANGEBYLEX myzset - (c
1) "a"
2) "b"
redis 127.0.0.1:6379> ZRANGEBYLEX myzset [aaa (g
1) "b"
2) "c"
3) "d"
4) "e"
5) "f"
redis>
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] 通過分?jǐn)?shù)返回有序集合指定區(qū)間內(nèi)的成員
redis 127.0.0.1:6379> ZADD salary 2500 jack # 測(cè)試數(shù)據(jù)
(integer) 0
redis 127.0.0.1:6379> ZADD salary 5000 tom
(integer) 0
redis 127.0.0.1:6379> ZADD salary 12000 peter
(integer) 0 redis 127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf # 顯示整個(gè)有序集
1) "jack"
2) "tom"
3) "peter" redis 127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf WITHSCORES # 顯示整個(gè)有序集及成員的 score 值
1) "jack"
2) "2500"
3) "tom"
4) "5000"
5) "peter"
6) "12000" redis 127.0.0.1:6379> ZRANGEBYSCORE salary -inf 5000 WITHSCORES # 顯示工資 <=5000 的所有成員
1) "jack"
2) "2500"
3) "tom"
4) "5000" redis 127.0.0.1:6379> ZRANGEBYSCORE salary (5000 400000 # 顯示工資大于 5000 小于等于 400000 的成員
1) "peter"
ZRANK key member 返回有序集合中指定成員的索引
redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES # 顯示所有成員及其 score 值
1) "peter"
2) "3500"
3) "tom"
4) "4000"
5) "jack"
6) "5000" redis 127.0.0.1:6379> ZRANK salary tom # 顯示 tom 的薪水排名,第二
(integer) 1
ZREM key member [member ...] 移除有序集合中的一個(gè)或多個(gè)成員
# 測(cè)試數(shù)據(jù) redis 127.0.0.1:6379> ZRANGE page_rank 0 -1 WITHSCORES
1) "bing.com"
2) "8"
3) "baidu.com"
4) "9"
5) "google.com"
6) "10" # 移除單個(gè)元素 redis 127.0.0.1:6379> ZREM page_rank google.com
(integer) 1 redis 127.0.0.1:6379> ZRANGE page_rank 0 -1 WITHSCORES
1) "bing.com"
2) "8"
3) "baidu.com"
4) "9" # 移除多個(gè)元素 redis 127.0.0.1:6379> ZREM page_rank baidu.com bing.com
(integer) 2 redis 127.0.0.1:6379> ZRANGE page_rank 0 -1 WITHSCORES
(empty list or set) # 移除不存在元素 redis 127.0.0.1:6379> ZREM page_rank non-exists-element
(integer) 0
ZREMRANGEBYLEX key min max 移除有序集合中給定的字典區(qū)間的所有成員
redis 127.0.0.1:6379> ZADD myzset 0 aaaa 0 b 0 c 0 d 0 e
(integer) 5
redis 127.0.0.1:6379> ZADD myzset 0 foo 0 zap 0 zip 0 ALPHA 0 alpha
(integer) 5
redis 127.0.0.1:6379> ZRANGE myzset 0 -1
1) "ALPHA"
2) "aaaa"
3) "alpha"
4) "b"
5) "c"
6) "d"
7) "e"
8) "foo"
9) "zap"
10) "zip"
redis 127.0.0.1:6379> ZREMRANGEBYLEX myzset [alpha [omega
(integer) 6
redis 127.0.0.1:6379> ZRANGE myzset 0 -1
1) "ALPHA"
2) "aaaa"
3) "zap"
4) "zip"
redis>
ZREMRANGEBYRANK key start stop 移除有序集合中給定的排名區(qū)間的所有成員
redis 127.0.0.1:6379> ZADD salary 2000 jack
(integer) 1
redis 127.0.0.1:6379> ZADD salary 5000 tom
(integer) 1
redis 127.0.0.1:6379> ZADD salary 3500 peter
(integer) 1 redis 127.0.0.1:6379> ZREMRANGEBYRANK salary 0 1 # 移除下標(biāo) 0 至 1 區(qū)間內(nèi)的成員
(integer) 2 redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES # 有序集只剩下一個(gè)成員
1) "tom"
2) "5000"
ZREMRANGEBYSCORE key min max 移除有序集合中給定的分?jǐn)?shù)區(qū)間的所有成員
redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES # 顯示有序集內(nèi)所有成員及其 score 值
1) "tom"
2) "2000"
3) "peter"
4) "3500"
5) "jack"
6) "5000" redis 127.0.0.1:6379> ZREMRANGEBYSCORE salary 1500 3500 # 移除所有薪水在 1500 到 3500 內(nèi)的員工
(integer) 2 redis> ZRANGE salary 0 -1 WITHSCORES # 剩下的有序集成員
1) "jack"
2) "5000"
ZREVRANGE key start stop [WITHSCORES] 返回有序集中指定區(qū)間內(nèi)的成員,通過索引,分?jǐn)?shù)從高到底
redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES # 遞增排列
1) "peter"
2) "3500"
3) "tom"
4) "4000"
5) "jack"
6) "5000" redis 127.0.0.1:6379> ZREVRANGE salary 0 -1 WITHSCORES # 遞減排列
1) "jack"
2) "5000"
3) "tom"
4) "4000"
5) "peter"
6) "3500"
ZREVRANGEBYSCORE key max min [WITHSCORES] 返回有序集中指定分?jǐn)?shù)區(qū)間內(nèi)的成員,分?jǐn)?shù)從高到低排序
redis 127.0.0.1:6379> ZADD salary 10086 jack
(integer) 1
redis > ZADD salary 5000 tom
(integer) 1
redis 127.0.0.1:6379> ZADD salary 7500 peter
(integer) 1
redis 127.0.0.1:6379> ZADD salary 3500 joe
(integer) 1 redis 127.0.0.1:6379> ZREVRANGEBYSCORE salary +inf -inf # 逆序排列所有成員
1) "jack"
2) "peter"
3) "tom"
4) "joe" redis 127.0.0.1:6379> ZREVRANGEBYSCORE salary 10000 2000 # 逆序排列薪水介于 10000 和 2000 之間的成員
1) "peter"
2) "tom"
3) "joe"
ZREVRANK key member 返回有序集合中指定成員的排名,有序集成員按分?jǐn)?shù)值遞減(從大到小)排序
redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES # 測(cè)試數(shù)據(jù)
1) "jack"
2) "2000"
3) "peter"
4) "3500"
5) "tom"
6) "5000" redis 127.0.0.1:6379> ZREVRANK salary peter # peter 的工資排第二
(integer) 1 redis 127.0.0.1:6379> ZREVRANK salary tom # tom 的工資最高
(integer) 0
ZSCORE key member 返回有序集中,成員的分?jǐn)?shù)值
redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES # 測(cè)試數(shù)據(jù)
1) "tom"
2) "2000"
3) "peter"
4) "3500"
5) "jack"
6) "5000" redis 127.0.0.1:6379> ZSCORE salary peter # 注意返回值是字符串
"3500"
ZUNIONSTORE destination numkeys key [key ...] 計(jì)算給定的一個(gè)或多個(gè)有序集的并集,并存儲(chǔ)在新的 key 中
redis 127.0.0.1:6379> ZRANGE programmer 0 -1 WITHSCORES
1) "peter"
2) "2000"
3) "jack"
4) "3500"
5) "tom"
6) "5000" redis 127.0.0.1:6379> ZRANGE manager 0 -1 WITHSCORES
1) "herry"
2) "2000"
3) "mary"
4) "3500"
5) "bob"
6) "4000" redis 127.0.0.1:6379> ZUNIONSTORE salary 2 programmer manager WEIGHTS 1 3 # 公司決定加薪。。。除了程序員。。。
(integer) 6 redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES
1) "peter"
2) "2000"
3) "jack"
4) "3500"
5) "tom"
6) "5000"
7) "herry"
8) "6000"
9) "mary"
10) "10500"
11) "bob"
12) "12000"
ZSCAN key cursor [MATCH pattern] [COUNT count] 迭代有序集合中的元素(包括元素成員和元素分值)?
總結(jié)
以上是生活随笔為你收集整理的redis之Set(有序)类型常用方法总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多回转电动执行器的维护指南
- 下一篇: DAO设计模式总结