2016-11-16 22 views
2

値を原子的に読み取ってからRedisからStackExchange C#ドライバを使用して削除する簡単な方法はありますか?
私はRedisのアイテムをバッファリングしており、特定のしきい値に達するとそれらを取得しますが、私のバッファをフラッシュしたいと思います。 私はリストに項目を格納し、 "バッファをフラッシュする"ことによって言及する必要があります。私はリストを削除したいという意味です。
"キー":[アイテムのリスト]StackExchange.Redisを使用したRedisからの原子の読み取りと削除

+1

[トランザクション](https://github.com/StackExchange/StackExchange.Redis/blob/master/Docs/Transactions.md)で包み? – apokryfos

+1

http://www.rediscookbook.org/get_and_delete.htmlもStackExchange.Redisで動作するはずです。 –

+0

@apokryfosまさに!いい視点ね!ありがとう! – Ben

答えて

3

あなたは、トランザクションを作成し、アトミックGET/DELを行うことができ、このような:

var db = connectionMultiplexer.GetDatabase(); 
var tran = db.CreateTransaction(); 
var getResult = tran.StringGetAsync(key); 
tran.KeyDeleteAsync(key); 
tran.Execute(); 
var value = getResult.Result; 

これはRedisのに次のコマンドを送信します:

MULTI 
GET "key" 
DEL "key" 
EXEC 
+0

あなたのキーがリストの場合は、おそらく 'tran.ListRangeAsync'の呼び出しを変更する必要があります – thepirat000

+0

これはまさに私がすべきことです! – Ben

関連する問題