redis 从集合中删除特定成员

标签 redis set members

我有一组成员。例如,名为“college”的集合包含 20 所大学的名称。

现在如何只删除一个子集,例如一组选定的 10 所大学,来自集合?

我运行的是v2.4.5的redis服务器

在此处找到的文档 http://redis.io/commands/srem说我们可以删除 redis >= 2.4 的多个键,但仍然无法弄清楚如何实现这一点。

我正在使用 RubyonRails,并且是在我的 Rails 控制台中完成的

> $redis
    #<Redis client v2.2.2 connected to redis://localhost:6379/0 (Redis v2.4.5)>
> ruby-1.9.3-p0 :011 > $redis.sadd("college","champion1")
 => true 
ruby-1.9.3-p0 :012 > $redis.sadd("college","champion2")
 => true 
ruby-1.9.3-p0 :013 > $redis.sadd("college","champion3")
 => true 
ruby-1.9.3-p0 :014 > $redis.sadd("college","champion4")
 => true 
ruby-1.9.3-p0 :015 > $redis.sadd("college","champion5")
 => true
ruby-1.9.3-p0 :016 > $redis.smembers("college")
 => ["champion1", "champion2", "champion3", "champion4", "champion5"
ruby-1.9.3-p0 :017 > $redis.srem("college","champion1" "champion2")
 => false
ruby-1.9.3-p0 :018 > $redis.smembers("college")
 => ["champion1", "champion2", "champion3", "champion4", "champion5"]

成员“champion1”和“champion2”不会从集合中删除。

我已经安装了 redis (2.2.2 ruby​​) gem。

最佳答案

鉴于您的客户端库不支持执行此操作的简单方法,您可以使用 sdiffsdiffstore .创建一组待移除的成员并获取集合的差异,并将结果存回原始集合。

它可能有点复杂,但应该可以。

关于redis 从集合中删除特定成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10592749/

相关文章:

redis - SignalR.Redis 和 ServiceStack.Redis 在同一个网络应用程序中

ruby-on-rails - 雷迪斯 : sum aggregation for keys having some regex

lua - 如何针对多个 Redis 值并行运行单个 Lua 脚本?

python - 所有可能的总和为零的整数集

swift - 要设置的词典

redis - ServiceStack Redis 客户端期望旧版本的 ServiceStack.Common

c# - 在 VB、C# 中使用 Linq 处理匿名类型

c++ - C++ 中相同的类成员名称和函数参数名称

c++ - 在没有 friend 的情况下在 C++ 中测试私有(private)类成员

c - 结构体成员在未调用时保持打印