У меня есть этот сценарий, использующий CacheManager (https://github.com/MichaCo/CacheManager):
- 1 консольное приложение (с дескриптором кэша inproc + дескриптором кэша Redis в качестве объединительной платы)
- 1 ASP.Веб-приложение NET MVC (с дескриптором кэша inproc + дескриптором кэша Redis в качестве объединительной платы)
Конфигурация кэша для консольного приложения и приложения ASP.NET MVC одинакова:
var configuration = ConfigurationBuilder.BuildConfiguration(settings =>
{
settings
.WithSystemRuntimeCacheHandle("InProc")
.And
.WithRedisConfiguration("redis", config =>
{
config.WithAllowAdmin()
.WithDatabase(0)
.WithEndpoint("localhost", 6379);
})
.WithMaxRetries(1000)
.WithRetryTimeout(100)
.WithRedisBackplane("redis")
.WithRedisCacheHandle("redis", true);
});
ICacheManager<string> cache = (ICacheManager<string>)CacheFactory.FromConfiguration(typeof(string), configuration);
Однако, когда я делаю простую аннулирование кэша из консольного приложения, например:
cache.Remove("Key")
Он не удаляется из дескриптора кэша inproc в веб-приложении. Я экспериментировал и создал 2 различных консольных приложения.с той же конфигурацией, что и выше, и это работает так же, как ожидалось (когда одно из консольных приложений делает недействительным ключ из кэша, он также удаляется из всех дескрипторов кэша в другом консольном приложении).
Это что-то особенное происходитпри использовании CacheManager при использовании с веб-приложением и консольным приложением, что означает, чтоСинхронизация кеша не работает?