草庐IT

分数线

全部标签

lua - Redis 获取排序集的键,其中至少一个成员的分数小于 N

我的redis中有多个排序集。它们的键具有以下模式:user:{userId}:data其中userId是实际值。相应集合的每个成员的分数等于添加时的时间戳。现在,我试图弄清楚如何为那些在特定时间戳之前添加了至少一个成员的排序集检索Redis键(这意味着至少一个成员的分数低于以毫秒为单位的给定时间戳)。我可以通过模式检索所有的键:KEYS'user:*:data'实际上,我可以使用命令检查一个键的所需条件:ZRANGEBYSCOREuser:{userId}:data-inf{timestamp}然后检查返回数据的大小但我是否有任何方法(单行、管道命令或使用Lua脚本)仅获取排序集中至

node.js - Redis:按分数排序的集合的交集

我想在Redis数据存储中存储位置三元组,但也想让它们可搜索。这将使进行范围查询成为可能,例如“给我12的所有点”。因此,我使用了排序集的组合。每个三元组都像这样保存在Redis中(例如位置A,x=1,y=2,z=3):hset/locations/Ax"1"hset/locations/Ay"2"hset/locations/Az"3"hset/locations/Apayload"{...somejsonpayload...}"zadd/locations:x1locations/Azadd/locations:y2locations/Azadd/locations:z3locat

python - 将元组的python列表存储在redis排序集中,其中元组的第二个元素用作分数

我有一个像这样的Python元组列表:lst=[(22,-150.0),(23,-150.0),(18,-148.5),(15,-99.4),(5,-75.75),(4,-49.2),(13,-49.0),(9,-41.3),(20,-25.5),(17,-22.3),(10,-13.1),(16,-12.5),(14,-9.8),(3,-8.5),(1,-8.4),(12,-1.5),(7,-0.6),(2,-0.4),(6,1.7),(21,2.7)]我如何将其传递到redis排序集中,以便将每个元组中的第二个值用作分数?我尝试了zadd(sorted_set,*lst),但出现错

redis - 使用 Redis 排序集维护顶级用户的上限列表(按分数)

我想在我正在做的python项目中维护一个前100名用户(按分数)的列表。我觉得redissortedsets可以成为上述目的的一个很好的工具。但是,我不想为每个曾经得分的用户保留记录。那将是一个相当大的排序集,我只想按总分排名前100名的用户。在Redis的范围内,有没有办法使用sortedsets来实现这一点?我知道在列表的情况下可以执行lpush和ltrim,但这是一个更简单的情况,不需要按score排序.那么我该怎么做呢?我知道这个问题也可以在redissortedsets领域之外得到回答,但是redissortedsets是一个很好的工具,因此,使用它们对我想要实现的目标非常

python - 获取带分数的zrange

是否有可能获得元素的元组列表及其在ZSET中的分数?例如:redis.zrange-function('channel',0,-1)[('item1',123),('item2',333),etc.] 最佳答案 对于redis-py,在zrange()中有一个可选参数根据docsforzrange():zrange(name,start,end,desc=False,withscores=False,score_cast_func=)Returnarangeofvaluesfromsortedsetnamebetweenstarta

redis - Redis 排序集分数有大小限制吗?

我正在向我的排序集添加值,其中分数可能高达38位,例如5.5857766150356906e+37。从我的测试来看,redis似乎可以很好地处理像zrangebyscore这样的命令,但我仍然觉得我需要问-这些分数有多大限制?当我开始存储更多值时,我是否正在做一些对于日常Redis来说过于昂贵的事情? 最佳答案 根据Redisdocumentation,排序集得分为:thestringrepresentationofadoubleprecisionfloatingpointnumber.Adouble-precisionfloati

redis - 将所有排序集分数归零

我正在使用Redis存储一组校验和。我正在递增解析大型数据集时看到的每个成员,并使用分数来确定我多次“访问”的成员。但是,由于此操作是定期进行的,因此我想之后将所有成员的分数重置为零。有什么好的方法吗?我知道ZRANGEBYSCORE,也许可以将它返回的内容“复制”到一个新key中,但是对于大量数据,这是不太理想的。我也可以在流程开始时取最低分数,然后ZREMRANGEBYSCORE所有等于或低于该分数的分数,但这似乎也不可取,因为我的分数会无限期地继续上升。 最佳答案 你可以使用ZUNIONSTORE使用WEIGHTS值为零复制集

redis - 我怎样才能从按排名排序的redis中获得分数?

例如,我在Redis中有一个排序集,我想获得第3个元素的分数。redis>ZADDmyzset1"one"redis>ZADDmyzset2"two"redis>ZADDmyzset3"three"redis>ZADDmyzset4"four" 最佳答案 ZRANGE就是为了那个。您可以选择带点或范围的索引。ZRANGEmyzset22WITHSCORES 关于redis-我怎样才能从按排名排序的redis中获得分数?,我们在StackOverflow上找到一个类似的问题:

redis - 从具有非连续分数的排序集中检索值/成员

我有一个分数列表。使用这些,我需要从redis排序集中提取值。我知道我可以使用zrangebyscore-但如果我提供的列表中的分数不连续怎么办?在这种情况下,我不能依赖zrangebyscoreminmax类型的命令。在这种情况下,从排序集中检索这些值的最有效方法是什么?看来我能做的最好的就是在这里一一检索。正确吗?这是一个示例(将排序集显示为元组列表):list_of_scores=[4,1,3]#thesearetoberetrievedsorted_set=[(item_1,1),(item_2,2),(item_3,3),(item_4,4)]每个元组都是一个member,s

sql - 创建用于存储高尔夫分数的可扩展数据库模式

我正在尝试设计一个数据库来存储我所有的friend和我的高尔夫成绩。您可能知道,高尔夫成绩由18洞个人成绩组成。我可以想到两种设计模式的方法:创建一个表,每个洞有一列(例如h1到h18),该表具有引用其他表的FKplayer_id、round_id和course_id。它有一个总计列,它是列h1到h18的总和。如果我改变了一个洞的分数,我将需要手动更新总计列。创建一个表,其中包含一列用于球洞得分、一列用于球洞索引、一列用于player_id、course_id和round_id。要获得一轮的总分,我需要对round_id、player_id执行SUM查询。目前,数据库可能会存储不到20