1.redis 命令 Zrem/Zinterstore/Zrank/Zincrby
移除有序集合中的一个或多个成员
语法
ZREM key member [member ...]
可用版本:
1.2.0
时间复杂度:
O(M*log(N)),其中 N 是排序集中的元素数,M 是要删除的元素数。
ACL 类别:
@write, @sortedset, @fast
从存储在key的排序集中删除指定的成员。不存在的成员将被忽略。
key存在且不包含排序集时返回错误。
#返回
整数回复,具体来说:
从排序集中删除的成员数,不包括不存在的成员。
#例子
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> ZREM myzset "two" #有序集合中删除一个元素。
(integer) 1
redis> ZRANGE myzset 0 -1 WITHSCORES
1) "one"
2) "1"
3) "three"
4) "3"
redis>
从 Redis 版本 2.4.0 开始:接受多个元素。
Zinterstore
计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
语法
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight
[weight ...]] [AGGREGATE <SUM | MIN | MAX>]
可用版本:
2.0.0
时间复杂度:
O(N K)+O(M log(M)) 最坏情况,N 是最小的输入排序集,K 是输入排序集的数量,M 是结果排序集中的元素数。
ACL 类别:
@write, @sortedset, @slow
计算由指定键给定的numkeys排序集的交集,并将结果存储在destination中。在传递输入键和其他(可选)参数之前,
必须提供输入键的数量(numkeys)。
默认情况下,元素的最终分数是其在其存在的排序集中的分数之和。因为交集要求一个元素是每个给定排序集的成员,
这导致结果排序集中每个元素的分数等于输入排序集的数量。
有关“WEIGHTS”和“AGGREGATE”选项的说明,请参阅ZUNIONSTORE。
如果destination已经存在,它将被覆盖。
#返回
整数回复:结果排序集中的元素数 destination。
#例子
redis> ZADD zset1 1 "one"
(integer) 1
redis> ZADD zset1 2 "two"
(integer) 1
redis> ZADD zset2 1 "one"
(integer) 1
redis> ZADD zset2 2 "two"
(integer) 1
redis> ZADD zset2 3 "three"
(integer) 1
redis> ZINTERSTORE out 2 zset1 zset2 WEIGHTS 2 3 #将zset1,zset2的交集存储在 out中。
(integer) 2
redis> ZRANGE out 0 -1 WITHSCORES
1) "one"
2) "5"
3) "two"
4) "10"
redis>
Zrank
返回有序集合中指定成员的索引
语法
ZRANK key member
可用版本:
2.0.0
时间复杂度:
O(log(N))
ACL 类别:
@read, @sortedset, @fast
返回存储在key处的排序集中member的排名,分数从低到高排序。排名(或索引)是基于0的,这意味着得分最低的成员的排名为 0。
可选的WITHSCORE参数用返回的元素的分数来补充命令的应答。
使用ZREVRANK以获得分数从高到低排序的元素的等级。
#返回
如果member存在于排序集中,整数回复: 的排名member。
如果member在排序集中不存在或key不存在,则 批量字符串回复:nil。
#例子
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> ZRANK myzset "three" #返返回指定成员索引。
(integer) 2
redis> ZRANK myzset "four"
(nil)
redis>
Zincrby
有序集合中对指定成员的分数加上增量 increment
语法
ZINCRBY key increment member
可用版本:
1.2.0
时间复杂度:
O(log(N)) 其中 N 是排序集中的元素数。
ACL 类别:
@write, @sortedset, @fast
将存储在key处的排序集中member的分数增加increment。如果排序集中不存在member,则添加increment作为它的分数
(就好像它以前的分数是“0.0”一样)。如果不存在key,则创建一个新的排序集,指定的member作为它的唯一成员。
当key存在但不包含已排序的集合时,会返回一个错误。
score值应该是数值的字符串表示,并接受双精度浮点数字。可以提供一个负值来减少分数。
#返回
批量字符串回复member:(双精度浮点数)的新分数,以字符串表示。
#例子
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZINCRBY myzset 2 "one" #给one 元素增加一个分数2,如果原先的分数不存在,就当做0处理。
"3"
redis> ZRANGE myzset 0 -1 WITHSCORES
1) "two"
2) "2"
3) "one"
4) "3"
redis>
8227

被折叠的 条评论
为什么被折叠?



