我们有一段时间一直使用缓存角色的部署(没有实际问题),我们最近在一个实例上添加了一个共同缓存的缓存。
由于我们已添加此共置缓存,因此我们偶尔会看到此错误:
ErrorCode<ERRCA0009>:SubStatus<ES0001>:Cache referred to does not exist. Contact administrator or use the Cache administration tool to create a Cache.
当我们以缓存角色访问缓存时,但这似乎几乎立即消失,一切都好了一段时间,直到此问题返回。
缓存似乎不太可能存在,因为它一直在工作,然后很快就开始工作了,那么问题是什么呢?
编辑以添加更多细节。
我们有2个缓存。 1是专用缓存角色,它保存一些响应数据,在Web角色和辅助角色之间共享,多个实例使用缓存(可能大约10个)。 1是1个Web角色(2个实例)上的共存缓存,它包含一些仅由此角色所需的小ID。
我们认为该问题可能与这两个缓存都配置为在Microsoft.WindowsAzure.Plugins.Caching.ConfigStoreConnectionString值中使用相同的存储帐户这一事实有关,并且它们似乎会覆盖彼此的更改。
这是使用两个缓存的角色的配置:
<dataCacheClients>
<dataCacheClient name="binaryConfig">
<autoDiscover isEnabled="true" identifier="CacheRole" />
</dataCacheClient>
<dataCacheClient name="request-ids">
<autoDiscover isEnabled="true" identifier="Api" />
<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />
</dataCacheClient>
我们只是通过
创建一个缓存客户端new DataCache(cacheName, clientConfigurationName)
然后调用Get
和Put
等
答案 0 :(得分:1)
所以我认为这是1.7 SDK中的一个错误,如果2个缓存配置为使用相同的存储帐户存储其配置,那么每个实例似乎都会覆盖其他实例配置,因此您将获得最后一个实例的配置跑步。如果我们重新启动一个角色,则配置包含该角色配置,如果我们然后重新启动另一个角色,那么我们将获得该角色配置。更改每个缓存以使用单独的存储帐户似乎可以解决此问题。
答案 1 :(得分:0)
在我的情况下,这似乎是因为我在一个具有不同命名缓存的azure项目中有两个角色(一个角色4命名为缓存,另一个角色只有1个命名缓存)。发生了我的cacheclusterconfigs blob中的cacheConfig.xml(与共存缓存相关联的存储帐户)被覆盖 - 似乎对于一个部署,只允许为所有角色配置一个命名缓存配置。
所以我想在你的情况下会发生同样的事情。