重新启动后连接到Redis缓存失败-Azure

重新启动后连接到Redis缓存失败-Azure,azure,redis,azure-redis-cache,redis-cache,cachemanager,Azure,Redis,Azure Redis Cache,Redis Cache,Cachemanager,我们正在使用以下代码连接到缓存(内存和Redis中): 设置 .WithSystemRuntimeCacheHandle() .WithExpiration(CacheManager.Core.ExpirationMode.Absolute,defaultExpiryTime) .及 .WithRedisConfiguration(CacheManagerDisconfigurationKey,connectionString) .WithMaxRetries(3) .WithRetryTim

我们正在使用以下代码连接到缓存(内存和Redis中):


设置
.WithSystemRuntimeCacheHandle()
.WithExpiration(CacheManager.Core.ExpirationMode.Absolute,defaultExpiryTime)
.及
.WithRedisConfiguration(CacheManagerDisconfigurationKey,connectionString)
.WithMaxRetries(3)
.WithRetryTimeout(100)
.WithJsonSerializer()
.带重新背板(CacheManagerDisconfigurationKey)
.WithRedisCacheHandle(CacheManagerDisconfigurationKey,true)
.WithExpiration(CacheManager.Core.ExpirationMode.Absolute,defaultExpiryTime);

它工作正常,但有时机器会重新启动(由我们托管它的Azure自动启动),重启后与Redis的连接失败,出现以下异常:


连接到“{Connection string}”失败。
位于CacheManager.Core.BaseCacheManager`1..ctor(字符串名称,ICAChemManagerConfiguration配置)
位于CacheManager.Core.BaseCacheManager`1..ctor(ICAChemManagerConfiguration配置)
在CacheManager.Core.CacheFactory.Build[TCacheValue](字符串cacheName,操作`1设置)
在CacheManager.Core.CacheFactory.Build上(操作'1设置)

根据redisfaq()部分:“为什么我的客户端与缓存断开了连接?”这可能发生在重新部署之后

问题是

  • 重新部署后是否有任何机制来恢复连接
  • 我们初始化连接的方式有问题吗
我们确信连接字符串正常

大多数客户端(包括StackExchange.Redis)通常在连接中断后自动连接/重新连接。但是,您的连接超时设置需要足够大才能成功重新连接。记住,您只需要连接一次,所以给系统足够的时间重新连接是可以的。较高的连接超时在出现突发连接或在导致CPU尖峰且某些连接可能无法及时发生后重新连接时特别有用


在本例中,我将RetryTimeout视为100。如果这是连接超时,请检查是否以毫秒为单位。100毫秒太低了。你可能想让它更像10秒钟(记住这是一次性的,所以你想给它时间来连接)

听起来是个好主意。但即使是低超时连接也应该在一段时间后恢复。但在我们的情况下,它永远不会恢复。你对此有什么解释吗?你在用信号机吗?如果没有,您正在使用什么技术?信号器存在此处描述的已知问题:。此外,请确保您没有使用Redis的基本SKU-这是一个节点,如果操作系统得到修补,则在修补完成之前无法访问。在应用程序启动时,如果Redis不可用,CacheManager将引发该异常。不过,您可以增加connectionTimeout属性,这可能会有所帮助。您可以手动重试初始化几次。。。启动后,连接(如果建立一次)应在Redis服务器停机后自动恢复。。。