.NET 5使用AddStackExchangeRedisCache出现多Redis连接问题咨询
该现象属于正常情况
这是底层依赖的StackExchange.Redis库的默认设计导致的,和上层Microsoft.Extensions.Caching.StackExchangeRedis包的单例初始化逻辑无关,具体原因如下:
ConnectionMultiplexer.Connect()方法执行成功后,默认会为单节点Redis实例创建两条独立的物理TCP连接:- 常规交互连接:用于处理所有普通的读写命令,你输出中
cmd=hmget的条目就对应这个连接,负责正常的缓存增删改查请求 - 订阅专用连接:用于处理Redis发布订阅相关的指令,哪怕你业务代码没有主动使用Pub/Sub能力,StackExchange.Redis内部也会通过该连接监听Redis节点状态变更、配置更新等系统通知,你输出中
sub=1、cmd=subscribe的条目就对应这个连接
- 常规交互连接:用于处理所有普通的读写命令,你输出中
- 你统计的连接数完全匹配逻辑:1条是
redis-cli自身的连接,2条是API服务创建的上述两类连接,总数量3条完全符合预期
默认场景下2条业务连接属于StackExchange.Redis的最优设计,不会造成额外性能损耗,不需要做额外修改。如果有特殊场景需要调整连接规则,可以在Redis连接字符串中配置对应参数实现。
内容的提问来源于stack exchange,提问作者TheDoomDestroyer
相关产品推荐
相关产品推荐

