ruby操作redis的sorted set,获取指定key的所有value和scroe,并且删除value与scroe不相等的值
时间: 2024-05-11 20:19:52 浏览: 155
可以使用 Redis 的 ZRANGE 和 ZSCORE 命令来获取指定 key 的所有成员和成员对应的分值,然后再遍历所有的成员,删除分值与指定值不相等的成员。
下面是一个 Ruby 的示例代码:
```ruby
require 'redis'
redis = Redis.new
key = 'my_sorted_set'
target_score = 5.0
# 获取所有成员和对应的分值
members_with_scores = redis.zrange(key, 0, -1, with_scores: true)
# 遍历所有成员,删除分值与指定值不相等的成员
members_with_scores.each do |member, score|
unless score == target_score
redis.zrem(key, member)
end
end
# 获取删除后的所有成员和对应的分值
members_with_scores = redis.zrange(key, 0, -1, with_scores: true)
# 输出所有成员和对应的分值
members_with_scores.each do |member, score|
puts "#{member}: #{score}"
end
```
上面的代码首先使用 ZRANGE 命令获取指定 key 的所有成员和对应的分值,然后使用 each 方法遍历所有成员,如果分值与指定值不相等,则使用 ZREM 命令删除该成员。最后再次使用 ZRANGE 命令获取删除后的所有成员和对应的分值,并输出结果。
阅读全文