【问题标题】:Query several hash from redis efficiently从redis高效查询多个hash
【发布时间】:2014-11-14 20:24:38
【问题描述】:

我想在redis中有一些对象数据,我想在一个表中显示所有对象。

在 SQL 中,我将获取所有对象的整行并将其显示在视图中

在 redis 中,我不想单独查询每个哈希,因为这将是无法忍受的慢。

假设我知道我想要提取的哈希键和哈希名称,有没有办法有效地做到这一点?

【问题讨论】:

    标签: hash redis


    【解决方案1】:

    我不确定为什么您认为查询每个哈希会慢得难以忍受。如果您循环遍历您的哈希键并为每个字段名称执行 HMGET,那么您应该很好,前提是您通过管道处理请求。

    或者,您可以在 Lua 脚本中执行此操作,该脚本接受(部分)键名作为 KEYS,字段作为 ARGV,以您需要的任何格式返回答案。

    【讨论】:

    • redis 本身很快,但问题是对 redis 的每个请求都需要经过约 200ms 的 RTT,这导致结果返回缓慢。我可以在欧洲 AWS 中设置 RedisLabs 吗?这可能会减少网络时间?
    • 200ms 确实是一个冗长的 rtt。是的,Redis Cloud 在 AWS eu-west 中可用。你的应用也在那里运行吗?
    • 是的,服务器和主数据库都在那里。回到我使用redis的时候,我不确定redis在哪里,服务器在哪里..很模糊
    【解决方案2】:
    • 将所有哈希键存储在一个集合中,我们称之为“hashkeyset”
    • 使用'sort'命令检索所有哈希值 sort hashkeyset get *->field0 get *->field1 ... get *->fieldN
    • 您可以在此链接http://redis.io/commands/sort 中找到有关“排序”的更多信息

    【讨论】:

      猜你喜欢
      • 2022-01-04
      • 1970-01-01
      • 2012-06-13
      • 2014-11-18
      • 2020-04-22
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      • 2020-05-02
      相关资源
      最近更新 更多