【发布时间】:2015-12-22 03:40:01
【问题描述】:
在c#中,使用服务栈redis, 基于以下网址,
https://github.com/ServiceStack/ServiceStack.Redis/wiki/RedisLocks
要锁定字符串条目,使用以下方法。
RedisClient objRedisClient = new RedisClient... // redis working fine
objRedisClient.SetEntry("stringkey", "abcd");
using (objRedisClient.AcquireLock(strRedisKey))
{
objRedisClient.SetEntry("stringkey", "efdh");
}
上面的 SetEntry 代码可以很好地设置字符串值。 但是当使用相同的代码锁定列表时,它会抛出 Redis 异常。
using (objRedisClient.AcquireLock("listkey"))
{
objRedisClient.Lists["listkey"].Push("{}");
}
Acquirelock 方法可以正常工作,但是将新值推送到 using 语句中的列表会引发以下异常。
WRONGTYPE 对持有错误值的键进行操作, 运动:50371,最后命令:RPUSH 97:Q {}
这只是一个简单的控制台应用程序。 如果没有获取锁方法,值会成功添加到列表中。
如何在c#中锁定一个redis列表?
【问题讨论】:
标签: c# redis locking servicestack servicestack.redis