背景:
我现在使用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
类似的东西
答案 0 :(得分:1)
简短的回答:不,你不能这样做
但是,您通常可以以使它们可排序的方式来组合多个键。在您的情况下,一个显而易见的选择是确定三个片段的最大范围,然后将它们全部组合成一个大数字。例如,1000_100_3000可能是数字100001003000(每块4个十进制数字),可以对其进行比较或分解。不过,您可能还想考虑位而不是数字。例如,也许允许每段20位,并使用移位/掩码位操作来组成/分解(即@Override
public void onDestry() {
super.onDestroy();
Utilities.getInstance().setDataList(null);
}
)