gpt4 book ai didi

redis - 我可以为 redis zset 定义自定义比较函数吗?

转载 作者:IT王子 更新时间:2023-10-29 06:12:30 28 4
gpt4 key购买 nike

背景:
我现在使用 php+redis 作为我的后端来存储排名。而 zset 似乎是处理这个问题的一个很好的解决方案。但是排名包含多个分数,如果第一个分数相等,我需要比较第二个分数来决定排序。总共有3个分数。

我以为会有一个界面,我可以为特定的 zset 设置自定义比较功能,以便我可以在其中进行排序工作,但我没有找到它。此外,我希望在添加时对排名进行排序。如果每次有请求获得排名时我都需要重新排序,那么我认为这是一种浪费。

预期结果:

zadd myset 1000_100_3000 matchId1
zadd myset 1000_2500_250 matchId2
zadd myset 1000_2500_200 matchId3

zrange myset 0 -1 返回:

matchId2
matchId3
matchId1

像这样

最佳答案

简短回答:不,你不能那样做

但是,您通常可以将多个键组合成可排序的方式。在您的情况下,一个明显的候选者是确定这三个部分的最大范围,然后将它们全部组合成一个大数字。例如,1000_100_3000 可能是数字 100001003000(每 block 4 个十进制数字),可以简单地进行比较或分解。不过,您可能还想用位而不是数字来思考。例如,可能允许每段 20 位,并使用移位/屏蔽位操作来组合/分解(即 (1000 << 40) | (100 << 20) | (3000) )

关于redis - 我可以为 redis zset 定义自定义比较函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56302632/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com