redis 学习笔记4--sortset
redis学习笔记3--sortSet
终于到最后一个数据结构了,加油!!
整体结构图:
http://dl.iteye.com/upload/picture/pic/115995/0ee3789f-33e1-35ca-ac65-cbd6b4e4e147.jpg
?
?
1.ZADD
语法: ZADD key score value?
释义:添加执行分数的value, score必须是double类型的数值
实践:
redis 127.0.0.1:6379> zadd z1 1 a?
(integer) 1
redis 127.0.0.1:6379> zadd z1 2 b?
(integer) 1
redis 127.0.0.1:6379> zadd z1 20 bb?
(integer) 1
redis 127.0.0.1:6379> zadd z1 10 ff ?
(integer) 1
redis 127.0.0.1:6379> zrange z1 0 -1?
1) "a"
2) "b"
3) "ff"
4) "bb"
?
?
2.ZREM
语法:ZREM key value?
释义:删除指定value的值
实践:
redis 127.0.0.1:6379> ZREM z1 b ? ? ? ? ? ?// 删除,指定value
(integer) 1
redis 127.0.0.1:6379> zrange z1 0 -1 ? ? ? ??
1) "a"
2) "ff"
3) "bb"
?
?
3.ZCARD
语法:ZCARD key?
释义:获取集合总数
实践:
redis 127.0.0.1:6379> zrange z1 0 -1?
1) "a"
2) "ff"
3) "bb"
redis 127.0.0.1:6379> zcard z1?
(integer) 3
?
4.ZCOUNT
语法:zcount key min max
释义:计算在指定范围内的元素数目
(1 6 ?==== 1 < x <= 6 ? ? ? ?// 括号代表开区间
1 6 ? ==== 1 <= x <= 6
?
?
实践:
redis 127.0.0.1:6379> zrange z1 0 -1 withscores?
1) "a"
2) "1"
3) "ff"
4) "10"
5) "bb"
6) "20"
redis 127.0.0.1:6379> zcount z1 5 10 ? ? ?// 闭区间,能取得10
(integer) 1
redis 127.0.0.1:6379> zcount z1 5 (10 ? ? //开区间,无法得到10
(integer) 0
?
5.ZSCORE
语法:ZSCORE key value
释义:获取指定key的分数
实践:
redis 127.0.0.1:6379> zrange z1 0 -1 withscores?
1) "a"
2) "1"
3) "ff"
4) "10"
5) "bb"
6) "20"
redis 127.0.0.1:6379> zscore z1 a ? ? ? ? ? ? // 获取a的分数
"1"
?
6.ZINCRBY
语法:ZINCRBY key score value?
释义:对于指定的value进行加法操作
实践:
redis 127.0.0.1:6379> zrange z1 0 -1 withscores?
1) "a"
2) "1"
3) "ff"
4) "10"
5) "bb"
6) "20"
redis 127.0.0.1:6379> zincrby z1 10 a ? ? ? ? ? ?// 对于a+10
"11"
redis 127.0.0.1:6379> zrange z1 0 -1 withscores?
1) "ff"
2) "10"
3) "a"
4) "11"
5) "bb"
6) "20"
redis 127.0.0.1:6379> zincrby z1 -3 a ? ? ? ? ?// 对于a-3
"8"
redis 127.0.0.1:6379> zrange z1 0 -1 withscores?
1) "a"
2) "8"
3) "ff"
4) "10"
5) "bb"
6) "20"
?
7.ZRANGE|ZREVRANGE
语法:ZRANGE|ZREVRANGE key?
释义:显示所有列表
redis 127.0.0.1:6379> zrange z1 0 -1?
1) "a"
2) "ff"
3) "bb"
redis 127.0.0.1:6379> zrevrange z1 0 -1?
1) "bb"
2) "ff"
3) "a"
?
8.ZRANGEBYSCORE|ZREVRANGEBYSCORE
语法:ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
释义:获取指定范围内的数值
实践:
redis 127.0.0.1:6379> zrange z1 0 -1 withscores?
1) "a"
2) "8"
3) "ff"
4) "10"
5) "bb"
6) "20"
redis 127.0.0.1:6379> zrangebyscore z1 -inf +inf ? // 在不清楚最大最小范围的时间,可以采用这个 -inf +inf?
1) "a"
2) "ff"
3) "bb"
redis 127.0.0.1:6379> zrangebyscore z1 8 10 ? ? ? // 闭区间
1) "a"
2) "ff"
redis 127.0.0.1:6379> zrangebyscore z1 (8 10 ? ? ?// 开区间
1) "ff"
?
?
9.ZRANK|ZREVRANK
语法:zrank|zremrank ?key member
释义:获取指定值在集合中的排名,以0代表第一位 。(顺序或是逆序)
redis 127.0.0.1:6379> zrange z1 0 -1 withscores?
1) "a"
2) "8"
3) "ff"
4) "10"
5) "bb"
6) "20"
redis 127.0.0.1:6379> zrank z1 a?
(integer) 0
redis 127.0.0.1:6379> zrank z1 ff //顺序位置
(integer) 1?
redis 127.0.0.1:6379> zrevrank z1 a ? ? ? ?//逆序位置
(integer) 2
?
10.ZREMRANGEBYRANK
语法 :ZREMRANGEBYRANK key min max?
释义:删除指定下标的数据
实践:
redis 127.0.0.1:6379> zrange z1 0 -1?
1) "a"
2) "ff"
3) "bb"
redis 127.0.0.1:6379> zremrangebyrank z1 0 1?
(integer) 2
redis 127.0.0.1:6379> zrange z1 0 -1?
1) "bb"
?
11.ZREMRANGEBYSCORE
语法 :ZREMRANGEBYSCORE key min max
释义:根据指定分数删除数据
实践:
redis 127.0.0.1:6379> zrange z1 0 -1 withscores?
1) "bb"
2) "20"
redis 127.0.0.1:6379> ZREMRANGEBYSCORE z1 -inf +inf ? ?// 删除所有的数据 等同于 ?del z1
(integer) 1
redis 127.0.0.1:6379> zrange z1 0 -1?
(empty list or set)
?
12.ZINTERSTORE
语法:ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
释义:
? 计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination 。
? 默认情况下,结果集中某个成员的 score 值是所有给定集下该成员 score 值之和.
?
实践:
redis 127.0.0.1:6379> zrange s1 0 -1?
1) "a"
2) "b"
3) "c"
redis 127.0.0.1:6379> zrange s2 0 -1?
1) "a"
2) "c"
3) "d"
redis 127.0.0.1:6379> zinterstore s3 2 s1 s2?
(integer) 2
redis 127.0.0.1:6379> zrange s3 0 -1?
1) "a"
2) "c"
redis 127.0.0.1:6379>?
?
13.ZUNIONSTORE
语法:ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
释义:计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination 。
默认情况下,结果集中某个成员的 score 值是所有给定集下该成员 score 值之 和 。
?
WEIGHTS
?使用 WEIGHTS 选项,你可以为 每个 给定有序集 分别 指定一个乘法因子(multiplication factor),每个给定有序集的所有成员的 score 值在传递给聚合函数(aggregation function)之前都要先乘以该有序集的因子。
?如果没有指定 WEIGHTS 选项,乘法因子默认设置为 1 。
?
AGGREGATE
?使用 AGGREGATE 选项,你可以指定并集的结果集的聚合方式。
?默认使用的参数 SUM ,可以将所有集合中某个成员的 score 值之 和 作为结果集中该成员的 score 值;使用参数 MIN ,可以将所有集合中某个成员的 最小 score 值作为结果集中该成员的 score 值;而参数 MAX 则是将所有集合中某个成员的 最大 score 值作为结果集中该成员的 score 值。
?
实践:
redis 127.0.0.1:6379> zunionstore s3 2 s1 s2?
(integer) 4
redis 127.0.0.1:6379> zrange s3 0 -1?
1) "b"
2) "a"
3) "c"
4) "d"
redis 127.0.0.1:6379>?