小智 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这样的序列化/解除化机制:
Run Code Online (Sandbox Code Playgroud)>> redis.set "foo", [1, 2, 3].to_json => OK >> JSON.parse(redis.get("foo")) => [1, 2, 3]
您的其他选择是将其存储为Redis的哈希值,正如你所说,使用如HMSET,但如果你唯一的目标是存储和检索对象(而不是在其上执行Redis的操作),这是多余的.