2016-11-16 44 views
2

有沒有一種簡單的方法來自動讀取一個值,然後使用StackExchange C#驅動程序從Redis中刪除它?
我在Redis中緩衝項目,當它們達到某個閾值時,我檢索它們,但我也想沖洗緩衝區。 我需要提及的是,我將項目存儲在一個列表中,並通過「清空緩衝區」我的意思是我想刪除列表。
「鑰匙」:[產品清單]原子讀取和從Redis刪除使用StackExchange.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