在Redis中将数组设置为哈希值

时间:2014-08-18 17:10:36

标签: ruby hash redis

我使用redis和ruby,我喜欢redis来制作一个散列,其中值是一个数组。但是,数组是键的值,它是另一个键的值(很快 - 另一个哈希中的哈希)。

arr = ["this", "is", "an", "array"]
r = Redis.new
r.hset("super_key", "key", arr)

这给了我错误:ERR wrong number of arguments for 'hset' command

我希望散列看起来像这样:

{ "super_key" => { "key" => ["this", "is", "an", "array"] } }

那么执行此操作的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

不是100%肯定这是让这种方法生气的原因,但它确实看起来像是以一种它不允许的方式使用它。来自the Redis gem documentation

  

Redis仅将字符串存储为值。如果要存储对象,可以使用序列化机制,如JSON ...

因此,请尝试存储array.to_json,并使用JSON.parse(obj)将其重新恢复。