草庐IT

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

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

ruby-on-rails - 遍历 redis 排序集以更新事件记录表

我正在使用Redis来跟踪我正在构建的留言板中某个主题的每日浏览量。我在主题模型中有另一个字段,用于存储主题的所有时间View。我使用排序集来跟踪主题View,因为它使我能够轻松快速地显示当今最流行的主题。我想创建一个在午夜运行的任务-遍历排序的集合-将当天特定主题的观看次数添加到主题的所有时间观看次数。然后我想在更新该主题的View后删除该成员。迭代排序列表中的所有成员并更新其相关(按ID)事件记录实体的优雅方法是什么?这就是我为主题添加View的方式:defself.record_view(id)REDIS.zincrby("views",1,id)end这就是我获取某个主题的观看

ruby-on-rails - 遍历 redis 排序集以更新事件记录表

我正在使用Redis来跟踪我正在构建的留言板中某个主题的每日浏览量。我在主题模型中有另一个字段,用于存储主题的所有时间View。我使用排序集来跟踪主题View,因为它使我能够轻松快速地显示当今最流行的主题。我想创建一个在午夜运行的任务-遍历排序的集合-将当天特定主题的观看次数添加到主题的所有时间观看次数。然后我想在更新该主题的View后删除该成员。迭代排序列表中的所有成员并更新其相关(按ID)事件记录实体的优雅方法是什么?这就是我为主题添加View的方式:defself.record_view(id)REDIS.zincrby("views",1,id)end这就是我获取某个主题的观看

python - Redis:在不存储中间集的情况下查找 SINTER 结果的 SCARD

我需要redis中2个大集合的交集的长度(SCARD)。所以这实现了我想要的:>SINTERSTOREintermediates:1s:2>SCARDintermediate但是集合很大,所以我不想存储中间值。从概念上讲,我想要:>SCARD(SINTERs:1s:2)有没有一种方法可以在单个命令中实现这一点,也许使用Lua脚本?或者我最好的选择是用我的应用程序语言编写脚本并在完成后删除中间值?例如使用python和redis-py:>>>r=redis.Redis(...)>>>pipe=r.pipeline()>>>res=pipe.sinterstore('intermediat

python - Redis:在不存储中间集的情况下查找 SINTER 结果的 SCARD

我需要redis中2个大集合的交集的长度(SCARD)。所以这实现了我想要的:>SINTERSTOREintermediates:1s:2>SCARDintermediate但是集合很大,所以我不想存储中间值。从概念上讲,我想要:>SCARD(SINTERs:1s:2)有没有一种方法可以在单个命令中实现这一点,也许使用Lua脚本?或者我最好的选择是用我的应用程序语言编写脚本并在完成后删除中间值?例如使用python和redis-py:>>>r=redis.Redis(...)>>>pipe=r.pipeline()>>>res=pipe.sinterstore('intermediat

performance - Redis CPU 在排序集上的性能

我们正在运行Redis,每秒对排序集中的键执行数百次增量,同时每秒对排序集执行数千次读取。这似乎运行良好,但在峰值负载期间,CPU使用率变得相当高,达到单核的80%。排序集本身是几千个键的小内存占用。CPU使用率的增加可能是由于每秒数百次增量还是数千次读取?了解两者都会影响性能,但哪个影响更大?鉴于此,监控我的生产实例以审查这些瓶颈的一些最佳指标是什么? 最佳答案 要检查的一点是排序集是否小到足以被Redis序列化。例如,“调试对象”可以应用于已排序集合的样本,以检查它们是否编码为ziplist。ziplist使用内存与CPU进行交

performance - Redis CPU 在排序集上的性能

我们正在运行Redis,每秒对排序集中的键执行数百次增量,同时每秒对排序集执行数千次读取。这似乎运行良好,但在峰值负载期间,CPU使用率变得相当高,达到单核的80%。排序集本身是几千个键的小内存占用。CPU使用率的增加可能是由于每秒数百次增量还是数千次读取?了解两者都会影响性能,但哪个影响更大?鉴于此,监控我的生产实例以审查这些瓶颈的一些最佳指标是什么? 最佳答案 要检查的一点是排序集是否小到足以被Redis序列化。例如,“调试对象”可以应用于已排序集合的样本,以检查它们是否编码为ziplist。ziplist使用内存与CPU进行交

Redis 排序集 : How do I get the first intersecting element?

我在Redis中有许多大型排序集合(5m-25m),我想获取出现在这些集合组合中的第一个元素。例如,我有20组,想取第1、5、7和12组,只得到这些组的第一个交集。似乎ZINTERSTORE后跟“ZRANGEfoo00”会做很多我需要的工作,因为它会计算所有交点,然后返回第一个交点。是否有不需要计算所有交叉点的替代解决方案? 最佳答案 虽然我建议这样做,但没有直接的本地替代方案:创建一个散列,其成员是您的元素。每次添加到您的排序集之一时,增加相关成员(使用HINCRBY)。当然,只有在检查该元素不存在于您尝试添加到的有序集合中后,您

Redis 排序集 : How do I get the first intersecting element?

我在Redis中有许多大型排序集合(5m-25m),我想获取出现在这些集合组合中的第一个元素。例如,我有20组,想取第1、5、7和12组,只得到这些组的第一个交集。似乎ZINTERSTORE后跟“ZRANGEfoo00”会做很多我需要的工作,因为它会计算所有交点,然后返回第一个交点。是否有不需要计算所有交叉点的替代解决方案? 最佳答案 虽然我建议这样做,但没有直接的本地替代方案:创建一个散列,其成员是您的元素。每次添加到您的排序集之一时,增加相关成员(使用HINCRBY)。当然,只有在检查该元素不存在于您尝试添加到的有序集合中后,您

lua - 当成员数量在运行时未知时,如何使用 Lua 向 Redis 集提供多个成员?

例如,可以使用sadd命令将多个成员添加到Redis中的某个set:saddmyset384842921在Lua中,我发现我可以执行如下相同的操作:redis.call("SADD","myset","38","484","2","92","1")但是,如果调用者不知道要向sadd提供多少参数,会发生什么情况?在JavaScript中,有一个Function.apply(...)函数可以按数组的顺序提供参数://Sourcefunctionwouldlooklikethis:functionX(a,b,c){...}X.apply(this,[38,484,2]);如何在Lua和Red