一尘不染

ASP.net MVC中的Azure Redis StackExchange.Redis ConnectionMultiplexer

redis

我已经读过,为了连接到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的服务,还是应该在所有服务中对其进行初始化,或者?

如您所见,我在这里有些迷路,请帮助!


阅读 302

收藏
2020-06-20

共1个答案

一尘不染

该文档是正确的,因为您应该只有一个ConnectionMultiplexer实例并可以重用它。不要创建多个,建议将其共享和重用

现在,对于创建部分,它不应位于Controller或Global.asax中。通常,您应该拥有自己的RedisCacheClient类(可能实现某些ICache接口),该类在内部使用ConnectionMultiplexer私有静态实例,并且在此位置创建代码-
正是您在问题中所写的。在懒惰的部分将推迟ConnectionMultiplexer的创建使用它的第一次,直到。

2020-06-20