1

我正在使用 ServiceStack 的会话功能(即使用内存缓存),我尝试访问会话对象中的一个键,对其进行修改,然后保存会话:

var filesList = Session.Get<List<string>>("NewRequestUploadedFiles");
filesList.Add(fileName);
Session["NewRequestUploadedFiles"] = filesList;

此代码可以通过来自客户端的多个并发请求并行调用,因此需要锁定此键。是否有任何内置方法可以实现对 ISession 的锁定?

目前我使用内存缓存,但将来我想将缓存提供程序更改为 Redis,所以如果有任何通用的方式,它是首选。

提前致谢。

4

1 回答 1

1

您应该考虑使用ServiceStack 的类型化会话,因为写入是原子的。

否则,如果您愿意,您可以使用 Redis 维护分布式锁。如果它只是内存中的单个主机,则可以使用 C# 标准锁定语义。

于 2013-03-25T16:19:01.717 回答