2012-05-01 14 views

答えて

8

No. Redisはフォーマットに依存しません。 JSONを解析できず、ドキュメント指向のデータベースでもありません。

LPUSHはRedisリストオブジェクトにのみ適用されます。

ただし、Lua Redis 2.6のサーバーサイドスクリプティング機能を使用して行うことができるものは、JSONオブジェクトをデコードし、アイテムを追加し、オブジェクトをエンコードして保存するスクリプトです。次のJSONオブジェクトと例えば

eval "local t = cjson.decode(redis.call('get',KEYS[1])) 
    if t.girlfriends then 
    table.insert(t.girlfriends,ARGV[1]) 
    else 
    t.girlfriends = {ARGV[1]} 
    end 
    return redis.call('set',KEYS[1], cjson.encode(t)) 
" 1 user:1 Augusta 

別の可能性は、JSONオブジェクトを直接格納回避することである。

set users:1 "{\"id\":1,\"name\":\"Rocco\",\"age\":50,girlfriends:[\"Ulla\"]}" 

新しいガールフレンドがeval commandを使用して一回の操作で実現することができる追加RedisではJSONオブジェクトを複数のRedisキーに変換するレイヤーを作成します(特定のキーのリストセクションを分離する)。例えば

{ "id":1, "name": "Rocco", "age":50, 
    girlfriends: [ "Ulla", "Bella", "Josepha", "Isabella" ] } 

として格納することができる:

HMSET users:1:info name Rocco age 50 
RPUSH users:1:girlfriends Ulla Bella Josepha Isabella 

このアプローチの主な利点は、性能と部分的な更新をサポートしています。主な欠点は、いくらかの柔軟性が失われ、変換コードが書くのが面倒かもしれないことです。

+0

詳細な回答ありがとうございます。 – user971956

関連する問題