Redis-rb将哈希推入列表

0xS*_*ina 11 ruby redis

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

谢谢

小智 19

将任何对象(不仅仅是哈希)存储为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'])
Run Code Online (Sandbox Code Playgroud)

从哈希中获取列表名称,其中ID存储在occupants列表中.您可以检索多个字段,但只能返回数组.

有关更多信息,请检查SORT命令


Jor*_*ing 10

Redis列表类似于Ruby Array.它没有钥匙.

正如redis-rb文档中所讨论的,如果要将Ruby对象存储在Redis值中,则需要首先使用例如JSON对其进行序列化:

存储对象

Redis仅将字符串存储为值.如果要将对象存储在键中,可以使用像JSON这样的序列化/解除化机制:

>> redis.set "foo", [1, 2, 3].to_json
=> OK

>> JSON.parse(redis.get("foo"))
=> [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

您的其他选择是将其存储为Redis的哈希值,正如你所说,使用如HMSET,但如果你唯一的目标是存储和检索对象(而不是在其上执行Redis的操作),这是多余的.