我已经读过,为了连接到Azure Redis缓存,最好遵循以下做法:
private static ConnectionMultiplexer Connection { get { return LazyConnection.Value; } } private static readonly Lazy<ConnectionMultiplexer> LazyConnection = new Lazy<ConnectionMultiplexer>( () => { return ConnectionMultiplexer.Connect(connStinrg); });
根据Azure Redis文档:
与Azure Redis缓存的连接由ConnectionMultiplexer类管理。此类设计为在整个客户端应用程序中共享和重用,并且不需要在每个操作的基础上创建。
那么,在我的ASP.net MVC应用程序之间共享ConnectionMultiplexer的最佳实践是什么?应该在Global.asax中调用它,还是每个Controller或smth将其初始化一次。还有吗?
另外,我还具有用于与应用程序通信的服务,因此,如果要在服务内部与Redis进行通信,应该将ConnectionMultiplexer的实例发送至Controllers的服务,还是应该在所有服务中对其进行初始化,或者?
如您所见,我在这里有些迷路,请帮助!
该文档是正确的,因为您应该只有一个ConnectionMultiplexer实例并可以重用它。不要创建多个,建议将其共享和重用。
现在,对于创建部分,它不应位于Controller或Global.asax中。通常,您应该拥有自己的RedisCacheClient类(可能实现某些ICache接口),该类在内部使用ConnectionMultiplexer私有静态实例,并且在此位置创建代码- 正是您在问题中所写的。在懒惰的部分将推迟ConnectionMultiplexer的创建使用它的第一次,直到。