我对redis Query的返回结果顺序的正确判断有一些疑问,特别是对于hgetall的判断
例如,我按照枚举的顺序将一些数据放入数据库:"key:1" {...}
"key:3" {...}
"key:10" {...}
"key:2" {...}
没有任何其他参数的“KEYS key:*”命令是否总是按照数据库中出现的顺序返回此数据,还是会尝试以任何方式对数据进行排序?
有没有人看过关于这个主题的官方redis文章?
非常感谢!
答案 0 :(得分:2)
如果您的解决方案需要可扩展('N'键,其中N可以增长),则不应在生产中使用KEYS
语句。
考虑使用SCAN
或类似内容。
你提到HGETALL
,这在某些情况下可能有效,但有一个O(N)的Big-O。如果您无法预测哈希集中有多少成员,和/或它是大量成员,请改用HSCAN
。
关于订单:无法保证。这是一个使用哈希的字典。这同样适用于KEYS
和SCAN
。首先获取所有这些,然后应用客户端订购。
如果您需要服务器端排序,Redis提供两种或三种机制:
SORT
功能。一般来说:这很慢。希望这有帮助,TW