如何在redis中存储散列数组

我想在redis中存储哈希数组,编写代码的最好方法是什么?

AFAIK的唯一方法就是去引用它们。 假设你有一个2个哈希数组: {foo: 'bar', baz: 'qux'}

你会分开存储它们,然后创build一个引用它们的SET:

 HMSET myarr:0 foo bar baz qux SADD myarr myarr:0 HMSET myarr:1 foo bar baz qux SADD myarr myarr:1 

然后,可以通过查询集合SMEMBERS myarr ,然后在所有返回的键上调用HGETALL <key>来重新获取它们,以重build原始散列数组。

我希望这是有道理的。 如果你find一个更聪明的方法,我很乐意听到它。

如果你正在使用支持json转换的语言,你可以把你的散列转换成json并将它附加到列表中。 您可以在Ruby中执行以下操作:

 require 'rubygems' require 'redis' require 'json' require 'pp' redis = Redis.new(:host => '127.0.0.1', :port => 6379) h1 = { :k1 => 'v1', :k2 => 'v2' } redis.rpush('arr', h1.to_json) h2 = { :k3 => 'v3', :k4 => 'v4' } redis.rpush('arr', h2.to_json) hashes = redis.lrange('arr', 0, -1) hashes.map! { |x| JSON.parse(x) } pp hashes