Redis学习笔记(六)有序集合进阶
1、基础操作
ZCARD(获取成员数量)
ZINCRBY key_name num member(将member的分数加num)
ZCOUNT key_name min max(获取分数在min与max之间的成员数量)
ZRANK/ZREVRANK key_name member(获取member在升序/降序集合中的排名)
ZSCORE key_name member(获取member的分数)
ZREMRANGEBYRANK key_name start stop(移除有序集合中排名介于start与stop之间的成员)
ZREMRANGEBYSCORE key_name min max(移除有序集合中分数介于min与max之间的成员)
root@localhost:~# redis-cli 127.0.0.1:6379> zadd zset 1 a 10 b 50 c 100 d (integer) 4 127.0.0.1:6379> zcard zset (integer) 4 127.0.0.1:6379> zincrby zset -5 c "45" 127.0.0.1:6379> zscore zset c "45" 127.0.0.1:6379> zrevrank zset a (integer) 3 127.0.0.1:6379> zrank zset a (integer) 0 127.0.0.1:6379> zremrangebyrank zset 10 20 (integer) 0 127.0.0.1:6379> zremrangebyrank zset 0 1 (integer) 2 127.0.0.1:6379> zrange zset 0 -1 withscores 1) "c" 2) "45" 3) "d" 4) "100" 127.0.0.1:6379> zremrangebyscore zset 0 45 (integer) 1 127.0.0.1:6379> zcount zset 0 100 (integer) 1
2、交并集
ZINTERSTORE/ZUNIONSTORE destination num_of_key key1 [key2...] [WEIGHTS weight1 [weight2...]] [AGGREGATE SUM|MIN|MAX] (给定集合进行交集/并集运算)
WEIGHTS表示为每个给定的有序集指定一个乘法因子,每个给定有序集的所有成员的分数在传递给聚合函数之前都要先乘以该因子,默认为1。
AGGREGATE指定结果集的聚合方式。默认使用的参数SUM,表示将分数之和作为结果集中该成员的分数。如果使用MIN或者MAX,表示取分数中的最小值或最大值作为结果的分数。
root@localhost:~# redis-cli 127.0.0.1:6379> zadd zset1 1 a 2 b 3 c (integer) 3 127.0.0.1:6379> zadd zset2 1 c 10 b 20 e (integer) 3 127.0.0.1:6379> zinterstore zset_i 1 zset1 zset2 (error) ERR syntax error 127.0.0.1:6379> zinterstore zset_i 2 zset1 zset2 (integer) 2 127.0.0.1:6379> zrange zset_i 0 -1 withscores 1) "c" 2) "4" 3) "b" 4) "12" 127.0.0.1:6379> zunionstore zset_u 2 zset1 zset2 aggregate max (integer) 4 127.0.0.1:6379> zrange zset_u 0 -1 withscores 1) "a" 2) "1" 3) "c" 4) "3" 5) "b" 6) "10" 7) "e" 8) "20"