我們用下面的代碼連接到我們的高速緩存(在內存和Redis的):連接到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)部分:「爲什麼我的客戶端是否與緩存斷開連接?「它可能在重新部署後發生。
的問題是
- 沒有任何機制來恢復連接之後重新部署
- 什麼不好的方式,我們初始化連接
我們相信在連接字符串OK
在應用程序啓動時,如果Redis不可用,CacheManager將拋出該異常。雖然你可以增加connectionTimeout屬性,也許有幫助。您可以手動重試初始化幾次...啓動後,連接(如果建立一次)應該在Redis服務器自動停機後自動恢復...... – MichaC