2017-01-17 3 views
0

を置き換える:Redisのハッシュやキー私は、このハッシュが言う、Redisの中でオブジェクトのハッシュを格納していた場合

{ a: 1, b: 2, c: 3, d: 4, e: 5 } 

そして、私は私のハッシュ値d10に変更されていることを知っていたら、私はそのRedisのを更新して行くことができますハッシュキーの値だけではなく、ハッシュをフェッチして変更し、それを再度レディスに書き込むのですか?

私はレディスでキャッシュしているオブジェクトの状態があり、基本的に状態が変わったら、キャッシュをリフレッシュする効率的な方法を探しています。

これを行うより良い方法はありますか?

こんにちは、私はこの試してみた:だからこの作品

a = { a: 1, b: 2, c: 3, d: 4, e: 5 } 
REDIS.mapped_hmset('key', a) 

を:

b = REDIS.hgetall('key') 
b['d'] = 10 
REDIS.mapped_hmset('key', b) 

しかし、可能ならば、私はRedisの中にキー、または別のアプローチを変更するために何かを探しています。

+0

ようこそスタックオーバーフロー。あなたが試したことを示し、それがうまくいかなかった理由を説明することは重要です。 –

+0

@theTinManありがとう、私は私が試したことを追加しました。 –

答えて

1

ハッシュの1つの値を変更(または追加)する場合は、HSETコマンドを使用できます。これは、(あなたにそれを返す)redisからハッシュを "フェッチ"せず、変更するだけです。

あなたの場合、コマンドはHSET YourHashName d 10になります。

HSET Documentation on redis.io

あなたが一度に複数の値を変更している見つけた場合は、HMSETを使用しています。このコマンドは、同じことを行う複数のHSET呼び出しよりも効率的です。これは、ネットワーク上のチャットが少ないためです。

HMSET Documentation on redis.io

ハッシュ内のデータを追加または変更するときに、あなたが最初のハッシュ(または任意の個々のハッシュ・キー値)を取得/読み込みする必要がないことに注意してください。また、データの設定時にハッシュが存在しない場合は、エラーを返す代わりにハッシュが作成されます。

+0

これは私が探していたものです! –

+0

@Remember_me私はあなたのコードがどのように機能しているか知っているあなたの編集を見てから、答えに多くの情報を追加しました。 – Toomaja

関連する問題