【发布时间】:2019-01-28 05:23:53
【问题描述】:
按照以下链接在 Web API 中实现 Redis 缓存。 https://docs.microsoft.com/en-us/azure/redis-cache/cache-dotnet-how-to-use-azure-redis-cache
缓存第一次正常工作,但失败并出现错误
“无法访问已处置的对象”
...关于后续读取。
正如上面博客中提到的,我在方法结束时处理连接并再次调用该方法抛出上述异常: lazyConnection.Value.Dispose();
还尝试将连接属性封装在不同的类中,如此处所述。但由于它们被声明为静态,相同的值会在所有实例中保留,因此在处理连接时会在后续调用中导致相同的异常。
https://www.c-sharpcorner.com/article/using-redis-cache-in-web-api/
有几种方法可以解决这个问题:
不要释放连接并为所有调用重复使用相同的连接。
使缓存连接为非静态连接,以便为每次调用创建和释放一个新连接。
这样做的正确方法是什么?
【问题讨论】:
-
StackExchange.Redis 的文档说 "请注意,ConnectionMultiplexer 实现了 IDisposable,并且可以在不再需要时释放。这个minimal reproducible example 故意不显示 using 语句的用法,因为 它非常罕见的是,您想简单地使用 ConnectionMultiplexer,因为它的想法是重复使用此对象。"
标签: c# azure caching redis stackexchange.redis