草庐IT

redis - 如何更改排序集中的数据?

我在Redis中使用排序集数据类型。我使用命令zadd添加数据。添加数据为JSON格式。我如何更改这个按分数排序的集合中的值?我需要获取JSON值并更改一个字段,然后更新此排序集。我试图添加具有相同分数的aging数据,但我得到了重复 最佳答案 很简单!ZREMkeydata;ZADDkeyscorenewdata;您根本无法更新SET结构中的元素。这在定义上是不可能的!就像我不能吃一杯水,我只能喝它^_^如果您还有任何问题,请回复。顺便说一下,我不知道您的应用需求,但我强烈感觉SORTEDSET不适合您的应用场景。

Redis:从排序集中获取值作为列表中的rpop

我想将数据作为键值存储在Redis中。为此使用排序集,因为列表不允许以键值格式存储数据。所以使用排序集。但我希望数据在redis列表rpop中工作时被弹出。redis的ZREM需要成员来获取分数,再加上它是一个排序列表,所以我可以按先到先得的方法存储吗?或者我应该改变我正在使用的数据结构吗? 最佳答案 这是一个解决方案,但您应该决定其效率;)ZREVRANGEBYSCOREkey+inf-infLIMIT01您可以做的一件事是使用redislists并将您的数据存储为key[FS]value例如:姓名:xxx因此,一旦您将数据弹出,

redis - 如何限制 Redis 排序集中的项目数

在我的例子中,我将大量记录上传到Redis排序集,但我只需要存储10个得分最高的项目。我无法影响上传的数据(在上传前对其进行排序和限制)。目前我只是执行ZREMRANGEBYRANKkey0-11上传完成后,但这种方法看起来不是很理想(它很慢,如果Redis可以处理会更好)。那么Redis是否提供开箱即用的东西来限制排序集中的项目数? 最佳答案 不,除了ZREMRANGEBYRANK之外,redis不提供任何此类功能。保留aredislistofconstantsize也有类似的问题,仅当使用LPUSH从左侧推送元素时才说10个元素

Redis 只保留排序集中的前 50 个元素

是否有可能在有序集合中只保留前x个元素并删除其他元素?我知道ZREMRANGEBYRANK和ZREMRANGEBYSCORE,但我想不出用它们来删除除前x个元素之外的所有内容。谢谢 最佳答案 你是说类似的东西吗ZREMRANGEBYRANKset0-51 关于Redis只保留排序集中的前50个元素,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/17650240/

redis - 使用 Redis 有序集中的部分键名查找值

我有一个排序集,它具有以下键名和值:zrangebargraph:branch:1:category:2:product:41)"76"2)"55"3)"10"4)"84"redis中是否有一种机制可以在使用zrange时使用通配符(也许是?)来获得相同的值?也就是说,redis是否支持zrangebargraph:branch:1:category:2?如果不是,如果我只知道类别ID(2)而不知道产品ID(4),而不使用不同的排序集,我如何才能最好地获得所有值? 最佳答案 这是2015年的更新答案。如果你可以将Redis升级到2.

Redis:在列表或排序集中扇出新闻提要?

我通过以下方式使用Redis缓存扇出新闻提要:每个提要事件都是一个键/值,例如activity:id,其中值是数据的JSON字符串。目前每个新闻提要都是一个列表,key是feed:user:user_id,列表包含相关事件的key。检索我使用的新闻提要,例如:'sortfeed:user:user_idbynosortget*limit040'我正在考虑将提要更改为排序集,其中分数是事件的时间戳,这样提要始终按时间排序。我读了http://arindam.quora.com/Redis-sorted-sets-and-lists-Pertaining-to-Newsfeed由于排序集的

redis - 给定成员子集,如何从 Redis 排序集中获得具有最大(或最小)分数的成员?

我正在编写一个算法来推断工作量最少的用户。根据正在创建的任务的类型/复杂性,我缩小了能够执行它的用户列表的范围。现在,我需要找到当前分配给他/她的任务最少的用户。我正在使用redis排序集来存储成员/用户以及指示分配给他们的任务数的分数。有没有办法在给定一部分成员的情况下获得得分最低的成员? 最佳答案 最低分成员:ZRANGEBYSCOREmyset-inf+infWITHSCORESLIMIT01得分最高的成员:ZREVRANGEBYSCOREmyset+inf-infWITHSCORESLIMIT01

redis - 在 Redis 有序集中存储整数?

我有一个系统可以处理已变成无符号长整数的键(通过将短序列打包成字节串)。我想尝试将这些存储在Redis中,并且我想以尽可能最好的方式进行。我主要关心的是内存效率。通过玩在线REPL,我注意到以下两个是相同的zaddmyset1.0"123"zaddmyset1.0123这意味着即使我知道我要存储一个整数,它也必须设置为一个字符串。我从文档中注意到,key仅存储为char*并且命令类似于SETBIT表明Redis不反对在客户端将字符串视为字节串。这暗示了一种存储unsignedlong的方式比它们的字符串表示形式稍微更有效。在有序集合中存储unsignedlong的最佳方式是什么?

redis - redis 中排序集中的元素数量是否有实际限制?

我目前正在将一些数据迁移到Redis,我正在考虑使用一个排序集来存储大约1.4e6个项目(以及相关的分数/计数)。一套中的元素数量是否可能超过实际限制,导致使用该套装太痛苦?我计划运行64位redis,因此数据的可用内存应该不是问题。有没有人有过这种大小的排序集的经验?如果是这样,该集合的插入和查询时间如何? 最佳答案 这取决于你想用这个集合做什么。简单的操作大多是O(logn),这意味着它们处理一百万项集所花费的时间是处理一千项集所花费的时间的两倍。除非你的配置中有严重的问题,比如内存限制小于设置,否则性能应该不是问题。您需要注意

caching - Redis:可以使数组或排序集中的元素过期吗?

目前是否只能使整个键/值对过期?如果我想将值添加到列表类型结构并让它们在插入后1小时自动删除怎么办。这目前是否可行,或者是否需要运行cron作业来手动进行清除? 最佳答案 有一个通用模式可以很好地解决这个问题。使用排序集,并使用时间戳作为分数。然后按分数范围删除项目就变得微不足道了,这可以定期完成,或者只在每次写入时完成,读取总是忽略超出范围的元素,只读取一个分数范围。更多信息:https://groups.google.com/forum/#!topic/redis-db/rXXMCLNkNSs