我想在 redis 中存储哈希数组,最好的编码方法是什么?
问问题
14908 次
2 回答
37
AFAIK 的唯一方法是取消引用它们。假设您有一个包含 2 个哈希的数组,例如:{foo: 'bar', baz: 'qux'}
.
您将它们分开存储,然后创建一个引用它们的 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>
所有返回的键来重建你的原始哈希数组。
我希望这是有道理的。如果您找到更聪明的方法,我会很高兴听到它。
于 2011-06-08T12:04:02.550 回答
5
如果您使用的语言支持 to/from json 转换,您可以将 hash 转换为 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
于 2013-03-26T13:09:54.887 回答