我想在ASP.NET Core项目中实现分布式缓存(Redis)。经过一段时间的研究,我发现有两种方法可以使用Startup.cs和ConnectionMultiplexer中的AddStackExchangeRedisCache创建Redis连接。
创建连接是否是线程安全的方法?
通过使用ConnectionMultiplexer,我们可以初始化数据库实例。根据几篇文章,延迟初始化也将照顾线程安全性
疑问: 1.从以上方法来看,哪种方法更好?
我在本地计算机上尝试了两种方法都工作正常。但是我找不到上述方法的优缺点。
请帮助。 预先感谢
BR,Ankit
答案 0 :(得分:8)
扩展方法AddStackExchangeRedisCache
在幕后使用ConnectionMultiplexer
(有关扩展方法本身,请参见here和here)。
@ 2:以两种方式均可生产
@ 3:connection is established lazily首次使用时,ConnectionMultiplexer
实例被重新使用(注册为DI单例)
@ 4:是的,请参见上述。 here,SemaphoreSlim
用于确保仅创建一次连接
优点和缺点:由于两者都使用ConnectionMultiplexer
,因此非常相似。
您可以在使用与实现无关的IDistributedCache
与直接使用多路复用器和StackExchange.Redis API(比接口具有更多特定功能)的优点之间进行选择。
答案 1 :(得分:0)
使用ConnectionMultiplexer,您可以获得可在Redis服务器上执行的命令的完整列表。使用DistributedCaching,您只能存储/检索字节数组或字符串,而不能执行Redis提供的任何其他命令。因此,如果只想将其用作缓存存储,则DistributedCaching提供了一个很好的抽象层。但是,除非使用ConnectionMultiplexer,否则即使是最简单的Redis增量/减量命令也将不可用。