【问题标题】:redis Query results orderredis 查询结果顺序
【发布时间】:2014-04-18 00:01:55
【问题描述】:

对于redis Query,尤其是hgetall的返回结果的顺序,我对自己判断的正确性有些怀疑

例如,我将一些数据按照枚举的顺序放入数据库中:

"key:1" {...} 
"key:3" {...}
"key:10" {...}
"key:2" {...}

不带任何其他参数的“KEYS key:*”命令是否总是按照其在数据库中出现的顺序返回此数据,还是会尝试以任何方式对数据进行排序?

有人看过一些关于这个主题的官方redis文章吗?

非常感谢!

【问题讨论】:

    标签: redis


    【解决方案1】:

    如果您需要解决方案具有可扩展性('N' 个键,N 可以增长),则不应在生产中使用 KEYS 语句。

    考虑使用SCAN,或类似的。

    您提到HGETALL,这在某些情况下可能有效,但具有 O(N) 的 Big-O。如果您无法预测哈希集中有多少成员,和/或成员数量很大,请改用HSCAN

    关于订单:没有任何保证。这是一个使用哈希的字典。这同样适用于 KEYSSCAN。首先获取所有这些,然后在客户端应用排序。

    如果需要服务器端排序,Redis 提供了两种或三种机制:

    1. 使用排序集。一般来说:这很快。
    2. 使用SORT 函数。一般来说:这很慢。
    3. 使用 Lua 服务器端脚本,结合 1 和/或 2

    希望这会有所帮助,TW

    【讨论】:

      猜你喜欢
      • 2012-01-02
      • 2012-05-20
      • 1970-01-01
      • 1970-01-01
      • 2013-02-19
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多