Imは、RailsのRedisで始まるので、これはおそらくばかげた質問です。
私はハッシュをredisサーバーに保存しようとしていますが、それを取得すると、それは単なるストリングIEです。
hash = {"field" => "value", "field2" => "value2"}
$redis.set('data', hash)
#So collecting the data
@data = $redis.get('data')
文字列として返されるため、これは明らかに間違っています。
また、いくつかの結果をループしてhset ieを使用してみました。
@data.each do |d|
$redis.hset('data', d.field, d.value)
end
# errror
# ERR Operation against a key holding the wrong kind of value
どこに行くかわからない。キー$ redis.del( 'data')を削除して、問題がないことを確認しました。
あなたがアドバイスできることを願っています、リー
Redisのドキュメントをもっとよく読んでいるべきだった。
回答:
IN
$redis.set 'data', hash.to_json
OUT
data = JSON.parse($redis.get("data"))
Redis gemは次のようにハッシュを再マッピングします。
$redis.mapped_hmset "test", { foo: "bar" }
$redis.hgetall "test" => {"foo"=>"bar"}
ハッシュをredisに保存するため。キーを最初のパラメーターとして渡し、次のパラメーターはhmset
メソッドのキーと値でなければなりません。
$redis.hmset('user:007', :name, 'Antonio', :busy, 'maybe', :ping, 'pong')
ハッピーコーディング。
$redis.set('data', hash)
を使用すると、ハッシュ変数を使用していても、実際には通常のRedis文字列を保存します(Json文字列にシリアル化される可能性がありますが、実際にはわかりません)。
$redis.hset('data', hash)
を使用してみてください(以前のようにフィールドをループするのではありません)。
別のポイント:以前のキーを完全に削除しましたか?以前の文字列キーがまだ「そこにある」オプションを排除するために、完全に異なるキーをhset
しようとしましたか?