我试图充分利用这两个世界。使用redis集以及具有确定性。这可能吗?
我使用常用命令存储一组:
SADD myset "foo"
SADD myset "bar"
但是如果我要求处理一个元素
SRANDMEMBER myset
我希望返回的元素是确定性的。我实际上并不关心它是哪一个,但我希望我的代码中的路径可以重现,否则调试变得相当困难。
是否可以使用redis设置种子,或者使用其他技术,以确保上面的三个操作按顺序始终返回相同的元素?
答案 0 :(得分:2)
否 - SRANDMEMBER
的行为无法控制。
如果您需要订购,即使仅为了调试,我建议您使用不同的方法。排序集是此任务的自然候选者,其行为与集合相同 - 使用0得分,因此成员按字典顺序排序并将SRANDMEMBER
的调用替换为ZRANGE
,并将其传递给您自己的客户端生成随机排名或确定性排名。