Redis 如何获得排序集上的差异

Redis 如何获得排序集上的差异,redis,Redis,如何从一个已排序的集合中获取大多数加权元素,但不包括在另一个集合(或列表或散列)中找到的元素 我唯一的选择是从已排序的集合中逐个获取元素并与“禁用”项列表进行比较吗?因为一台服务器有这么多事务,这不是很慢吗 这里的方法是什么?注意:我想你的意思是sadd禁用了两个 正如您所发现的,SDIFF不会对排序集进行操作-这是因为定义排序集之间的差异并不简单 您可以做的是首先使用ZUNIONSTORE创建一个临时集,并将intersect的分数设置为0。然后执行一个不包括0的范围,例如: 127.0.0.

如何从一个已排序的集合中获取大多数加权元素,但不包括在另一个集合(或列表或散列)中找到的元素

我唯一的选择是从已排序的集合中逐个获取元素并与“禁用”项列表进行比较吗?因为一台服务器有这么多事务,这不是很慢吗


这里的方法是什么?

注意:我想你的意思是
sadd禁用了两个

正如您所发现的,
SDIFF
不会对排序集进行操作-这是因为定义排序集之间的差异并不简单

您可以做的是首先使用ZUNIONSTORE创建一个临时集,并将intersect的分数设置为0。然后执行一个不包括0的范围,例如:

127.0.0.1:6379> ZADD all 1 one 2 two 3 three
(integer) 3
127.0.0.1:6379> SADD disabled two
(integer) 1
127.0.0.1:6379> ZUNIONSTORE tmp 2 all disabled WEIGHTS 1 0 AGGREGATE MIN
(integer) 3
127.0.0.1:6379> ZREVRANGEBYSCORE tmp +inf 1 WITHSCORES
1) "three"
2) "3"
3) "one"
4) "1"
@djanowski:谢谢:)希望能在2016年#RedisConf再次见面!
127.0.0.1:6379> ZADD all 1 one 2 two 3 three
(integer) 3
127.0.0.1:6379> SADD disabled two
(integer) 1
127.0.0.1:6379> ZUNIONSTORE tmp 2 all disabled WEIGHTS 1 0 AGGREGATE MIN
(integer) 3
127.0.0.1:6379> ZREVRANGEBYSCORE tmp +inf 1 WITHSCORES
1) "three"
2) "3"
3) "one"
4) "1"