18

ハッシュの配列をredisに保存したいのですが、それをコーディングする最良の方法は何ですか?

4

2 に答える 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

次に、set:をクエリしてすべてを取得し、返されたすべてのキーをSMEMBERS myarr呼び出しHGETALL <key>て、元のハッシュの配列を再構築します。

これが理にかなっていることを願っています。そして、あなたがより賢い方法を見つけたら、私はそれを聞いてうれしいです。

于 2011-06-08T12:04:02.550 に答える
5

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
于 2013-03-26T13:09:54.887 に答える