【问题标题】:Redis Command To Sort KeysRedis 命令对键进行排序
【发布时间】:2015-06-25 00:52:48
【问题描述】:

Redis 命令 keys * 将返回所有键的列表,而 scan 0 是一种更新的方法来执行类似的操作,但阻塞较少。是否存在任何可以对找到的键进行排序的命令,例如按字母顺序、数字顺序、创建时间戳等?

寻找标准和花哨的命令示例:

标准keys post:*命令:

post:2150
post:2400
post:1001
post:1006

花哨的命令按字母顺序对键进行排序:

post:1001
post:1006
post:2150
post:2400

【问题讨论】:

  • 您在寻找this吗?

标签: javascript php sorting redis


【解决方案1】:

Redis 返回键,使用 KEYS(不要在生产中使用它!)或 SCAN,无序。没有“花哨”的 API 可以将它们排序返回,但您可以在客户端应用程序中完成。

【讨论】:

  • 感谢您确认确实如此。我不确定我是否遗漏了 Redis 规范中的某些内容。是的,这就是我目前正在做的,在客户端对结果进行排序。
  • 非常好——如果你做了很多这些,你可以考虑通过使用(排序)集、排序命令和/或 Lua 脚本将(一些)逻辑移动到 Redis。 OTOH,使用 Redis 过多的 RAM/CPU/NW 可能会成为另一个问题,因此肯定需要权衡。就个人而言,如果您只需要对客户端的密钥进行排序,我会保留该工作(除非客户端的性能是一个问题;))
  • 完全同意客户端卸载并完全利用 z 命令按分数对数据进行混洗。我不为 Redis 工作,但不得不说它的功能是一种全新的架构范式,它改变了游戏规则。
  • 如果你需要一个特定的一次性事情,你可以运行 unix 命令对SCAN的输出进行排序
【解决方案2】:

您始终可以使用完美运行的 unix 命令

redis-cli --scan --pattern yourpattern* | sort

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 2016-08-24
    相关资源
    最近更新 更多