草庐IT

php - 获取出现在多个 redis 排序集上的所有键

我在Redis上有多个排序集,其中包含一个用户ID和一个分数。有什么方法可以过滤和获取出现在多个集合上的用户ID?例如,如果列表看起来像这样ListA-u1,u2,u3,u4,u5ListB-u3,u4,u5ListC-u4,u2,u3ListD-u4,u1,u2如果我输入列表A、B、C、D,那么应该出现的唯一用户ID是u4如果我输入列表A、B、C,则返回的用户ID为u4、u3。我可以在PHP中通过加载每个列表并过滤掉每个列表直到我得到我想要的ID来想象这样做,但是有什么方法可以在Redis中执行这个操作吗?我也对在Redis中存储这种结构的新方法持开放态度。

data-structures - Redis 集群如何处理排序集 ZSET(和其他)的复制?

Redis集群支持排序集。如果与复制因子>1一起使用,如何实现复制登录?主节点是否将针对排序集应用的所有操作转发到副本节点,或者是否有其他机制(例如,每次发生变化时通过网络复制整个集)?子问题:这个复制有多可靠?它如何与频繁访问的集合和巨大的排序集合一起扩展? 最佳答案 Redis的复制是基于操作的,这意味着从服务器从主服务器获取写命令流。复制机制与集群功能无关,无论是在集群中还是由独立的Redis服务器使用,其工作原理都是一样的。复制非常可靠,但请注意它是异步的。 关于data-str

data-structures - Redis 集群如何处理排序集 ZSET(和其他)的复制?

Redis集群支持排序集。如果与复制因子>1一起使用,如何实现复制登录?主节点是否将针对排序集应用的所有操作转发到副本节点,或者是否有其他机制(例如,每次发生变化时通过网络复制整个集)?子问题:这个复制有多可靠?它如何与频繁访问的集合和巨大的排序集合一起扩展? 最佳答案 Redis的复制是基于操作的,这意味着从服务器从主服务器获取写命令流。复制机制与集群功能无关,无论是在集群中还是由独立的Redis服务器使用,其工作原理都是一样的。复制非常可靠,但请注意它是异步的。 关于data-str

linux - Redis used_memory_rss 大于配置集 'maxmemory' ?

我们在Redis服务器中设置了120GB的最大内存。所以在信息输出中used_memory总是小于等于120GB但used_memory_rss是~140GB谁能解释一下这是什么原因? 最佳答案 总使用内存包括Redis在数据存储之外使用的任何内存,特别是在磁盘持久性操作(例如BGSAVE和AOF重写)期间使用的各种缓冲区和内存。maxmemory设置是针对允许的数据量(包括一些缓冲区,例如客户端缓冲区)——而不是总系统内存。当您达到maxmemory时,Redis将停止允许通过数据命令增加内存使用量。但它仍然可以免费使用除此之外的

linux - Redis used_memory_rss 大于配置集 'maxmemory' ?

我们在Redis服务器中设置了120GB的最大内存。所以在信息输出中used_memory总是小于等于120GB但used_memory_rss是~140GB谁能解释一下这是什么原因? 最佳答案 总使用内存包括Redis在数据存储之外使用的任何内存,特别是在磁盘持久性操作(例如BGSAVE和AOF重写)期间使用的各种缓冲区和内存。maxmemory设置是针对允许的数据量(包括一些缓冲区,例如客户端缓冲区)——而不是总系统内存。当您达到maxmemory时,Redis将停止允许通过数据命令增加内存使用量。但它仍然可以免费使用除此之外的

performance - 当两个输入集之一是正常集时,zinterstore 会更快/更慢吗?

我知道我可以用普通集作为参数(Redis:Howtointersecta"normal"setwithasortedset?)来做一个zinterstore。这会影响性能吗?它会比仅使用zset更快/更慢吗? 最佳答案 根据sorted-setsourcecode,ZINTERSTORE会将集合视为得分为1的有序集合,函数名称为zunionInterGenericCommand。相交集将花费更多或更少的时间,具体取决于此步骤中使用的排序算法,例如:/*sortsetsfromthesmallesttolargest,thiswill

performance - 当两个输入集之一是正常集时,zinterstore 会更快/更慢吗?

我知道我可以用普通集作为参数(Redis:Howtointersecta"normal"setwithasortedset?)来做一个zinterstore。这会影响性能吗?它会比仅使用zset更快/更慢吗? 最佳答案 根据sorted-setsourcecode,ZINTERSTORE会将集合视为得分为1的有序集合,函数名称为zunionInterGenericCommand。相交集将花费更多或更少的时间,具体取决于此步骤中使用的排序算法,例如:/*sortsetsfromthesmallesttolargest,thiswill

lua - Redis:原子获取和条件集

我想在Redis中执行原子GET,如果返回值等于某个预期值,我想执行SET,但我想将所有这些链接在一起作为一个原子操作。(我正在尝试设置一个标志,指示是否有任何进程正在将数据写入磁盘,因为可能只允许一个进程这样做。)有没有可能用Redis来完成这个?我看过关于MULTI操作的文档,但我还没有看到MULTI操作中的条件操作。其他人可以为此提供的任何建议将不胜感激! 最佳答案 您可以使用Luascripts在redis服务器本身上执行GET和set操作。.它们是原子的,也允许您添加逻辑。 关

lua - Redis:原子获取和条件集

我想在Redis中执行原子GET,如果返回值等于某个预期值,我想执行SET,但我想将所有这些链接在一起作为一个原子操作。(我正在尝试设置一个标志,指示是否有任何进程正在将数据写入磁盘,因为可能只允许一个进程这样做。)有没有可能用Redis来完成这个?我看过关于MULTI操作的文档,但我还没有看到MULTI操作中的条件操作。其他人可以为此提供的任何建议将不胜感激! 最佳答案 您可以使用Luascripts在redis服务器本身上执行GET和set操作。.它们是原子的,也允许您添加逻辑。 关

set - 在 Redis 中高效访问主排序集的任意子集

给定具有快速变化的分数/权重的大型排序集,维护子集并按主集顺序访问这些子集的最有效方法是什么? 最佳答案 你有几个选择:更新超集中的分数,当您需要读取子集时调用ZINTERSTORE并将子集权重设置为0,以便结果是具有超集中分数的子集。更新分数时,写入子集和超集。最合适的选项将取决于您需要优化的内容-读取、写入、内存或简单性。子集的确定方式以及集合的大小相对于更新次数也可能产生影响。 关于set-在Redis中高效访问主排序集的任意子集,我们在StackOverflow上找到一个类似的问