3

redisの単一コマンドで値とttlを持つキーを設定することは可能ですか?

私は redis でロックを実装しようとしていますが、 http: //redis.io/commands/hsetnxが最適な方法のようです。これはアトミックであり、キーが既に存在する場合は 0 を返します。TTLでHSETNXすることは可能ですか

例えば

HSETNX myhash mykey "myvalue" 10

#and key expires after 10 seconds, and a subsequent HSETNX after 10 seconds returns a value 1 i.e. it behaves as if mykey is not present in myhash
4

1 に答える 1

4

主な問題は、Redis がハッシュマップのフィールドの有効期限をサポートしていないことです。

を呼び出すことによってのみ、ハッシュマップ全体を期限切れにすることができEXPIREますmyhash

したがって、ハッシュマップの代わりに通常の Redis 文字列を使用することを再検討する必要がありSETEXます

HGETALLを使用しHKEYSたりHVALS、 hashmapを利用したい場合を除き、問題なく動作しmyhashます。

SETEX mynamespace:mykey 10 "myvalue"

mynamespaceここではハッシュマップではなく、単なるプレフィックスですが、ほとんどの場合、ハッシュマップと同じように機能します。唯一の違いは、どのキーが特定のファイルに格納されているかを確認namespaceしたり、単一のコマンドでそれらすべてを取得したりする効率的な方法がないことです。

于 2013-10-18T05:28:40.320 に答える