【问题标题】:Redis-rb pushing hash into listRedis-rb 将哈希推入列表
【发布时间】:2012-02-08 14:01:34
【问题描述】:

使用 redis-rb,我如何将哈希推送到列表中?我必须对其进行 JSON 编码还是本机支持?如果是这样,我该怎么做?我只看到带有键和键/值对的 hset 方法。

谢谢

【问题讨论】:

    标签: ruby redis


    【解决方案1】:

    将任何对象(不仅仅是哈希)存储为 JSON 编码字符串是一种方法。

    如果您的用例允许,您还可以在列表中存储哈希 ID 并使用 SORT GET 检索其他值。

    例子:

    r.hmset('person:1', 'name','adam','age','33')
    r.hmset('person:2', 'name','eva','age','28')    
    
    r.lpush('occupants', 'person:1')
    r.lpush('occupants', 'person:2')
    
    r.sort('occupants', :get => ['*->name'])
    

    从哈希中获取列表名称,其中 ID 存储在 occupants 列表中。您可以检索多个字段,但您只会得到数组。

    更多信息请查看SORT command

    【讨论】:

      【解决方案2】:

      Redis 列表类似于 Ruby 数组。它没有钥匙。

      正如redis-rb documentation 中所讨论的,如果您想将 Ruby 对象存储在 Redis 值中,您需要首先使用例如序列化它。 JSON:

      存储对象

      Redis 仅将字符串存储为值。如果你想在 key 中存储一个对象,你可以使用 JSON 之类的序列化/反序列化机制:

      >> redis.set "foo", [1, 2, 3].to_json
      => OK
      
      >> JSON.parse(redis.get("foo"))
      => [1, 2, 3]
      

      您的另一个选择是将其存储为 Redis 哈希,正如您所提到的,使用例如HMSET,但是如果您的唯一目标是存储和检索对象(而不是对其执行 Redis 操作),那是多余的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-26
        • 2021-07-01
        • 2011-09-01
        • 2012-05-05
        • 2014-06-28
        • 2023-03-31
        • 1970-01-01
        相关资源
        最近更新 更多