使用StackExchange.Redis从Redis进行原子读取和删除

时间:2016-11-16 14:40:47

标签: c# redis stackexchange.redis atomicity

是否有一种简单的方法可以原子方式读取值,然后使用StackExchange c#驱动程序从Redis中删除它?
我在Redis中缓冲项目,当它们达到某个阈值时我会检索它们,但我也想刷新我的缓冲区。 我需要提一下,我将项目存储在一个列表中并通过“刷新缓冲区”我的意思是我要删除列表 “关键”:[项目清单]

1 个答案:

答案 0 :(得分:6)

您可以创建一个事务并以原子方式执行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