如何使用servicestack类型的客户端更新redis列表中的项目?

时间:2015-09-03 07:54:46

标签: redis servicestack

我的代码

var redislist = client.As<MyModel>().Lists["key_of_list"];
var m = redislist.SingleOrDefault(p => p.member_id == request.member_id);
m.email = request.email;

所以你可以看到,我有项目m,我也可以更新项目。如果我想更新它并将其保存回redis列表,问题是如何做下一步?

我应该删除它并添加一个新项目,如

redislist.Remove(old_item);
var new_item = new MyModel();
new_item.email = request.email;
redislist.Add(new_item);

顺便问一下,redis.append和redis.add之间的区别是什么?

1 个答案:

答案 0 :(得分:1)

不,您需要使用IRedisTypedClient<T>.SetItemInList which internally uses lset command,而不是删除和添加项目。

另一方面,添加使用set (i.e. setting a key with some value overwriting it if it exists) and append`与重要差异(from Redis official documentation)几乎相同:

  

如果key已存在且为字符串,则此命令会附加该值   在字符串的末尾。如果密钥不存在,则创建并设置密钥   作为一个空字符串,所以APPEND将与此特殊中的SET类似   情况下。