【发布时间】:2018-03-27 21:18:07
【问题描述】:
我们正在使用以下代码连接到我们的缓存(内存中和 Redis):
settings
.WithSystemRuntimeCacheHandle()
.WithExpiration(CacheManager.Core.ExpirationMode.Absolute, defaultExpiryTime)
.And
.WithRedisConfiguration(CacheManagerRedisConfigurationKey, connectionString)
.WithMaxRetries(3)
.WithRetryTimeout(100)
.WithJsonSerializer()
.WithRedisBackplane(CacheManagerRedisConfigurationKey)
.WithRedisCacheHandle(CacheManagerRedisConfigurationKey, true)
.WithExpiration(CacheManager.Core.ExpirationMode.Absolute, defaultExpiryTime);
它工作正常,但有时机器会重新启动(由我们托管它的 Azure 自动重新启动)并且在重新启动后与 Redis 的连接失败并出现以下异常:
Connection to '{connection string}' failed.
at CacheManager.Core.BaseCacheManager`1..ctor(String name, ICacheManagerConfiguration configuration)
at CacheManager.Core.BaseCacheManager`1..ctor(ICacheManagerConfiguration configuration)
at CacheManager.Core.CacheFactory.Build[TCacheValue](String cacheName, Action`1 settings)
at CacheManager.Core.CacheFactory.Build(Action`1 settings)
根据 Redis FAQ (https://docs.microsoft.com/en-us/azure/redis-cache/cache-faq) 部分:“为什么我的客户端与缓存断开连接?”重新部署后可能会发生。
问题是
- 是否有任何机制可以在重新部署后恢复连接
- 我们初始化连接的方式有什么问题
我们确定连接字符串正常
【问题讨论】:
-
在应用启动时,如果 Redis 不可用,CacheManager 将抛出该异常。不过,您可以增加 connectionTimeout 属性,也许这会有所帮助。您可以手动重试几次初始化...启动后,连接(如果建立一次)应该会在 Redis 服务器停机后自动恢复...
标签: azure redis azure-redis-cache redis-cache cachemanager