Я недавно переместил свой код с простого использования распределенного кэша на использование CacheManager для двухуровневого кэширования для увеличения скорости работы моих приложений.
Я использую InMemory и Redis в качестве объединительной платы.
Все работает хорошо, поскольку InMemory и хранение информации обратно в Redis касаются, но я борюсь с аннулированием кэша и просмотром новой информации.
У меня есть консольное приложение, которое запускается на сервере и выполняет обновления данных, а затем использует метод AddOrUpdate в CacheManager для отправки новых данных в кэш.
Проблема в том, что мой интерфейсный интерфейс видит устаревшие данные и не обновляется.
Я знаю, что консольное приложение ранее работало, так как оно все работало над распределенным кэшированием и часто обновлялось.
Я вошел в Redis и проверил, есть ли подписчики на канал PUBSUB, а их нет; должно быть?
И мое консольное приложение, и API используют одну и ту же версию библиотеки, а также используют одну и ту же конфигурацию кэша. Конфигурация ниже.
{
"$schema": "http://cachemanager.michaco.net/schemas/cachemanager.json#",
"redis": [
{
"key": "redisConnection",
"connectionString": "x.x.x.x, allowAdmin=true"
}
],
"cacheManagers": [
{
"maxRetries": 1000,
"name": "masterCache",
"retryTimeout": 100,
"updateMode": "Up",
"backplane": {
"key": "redisConnection",
"knownType": "Redis",
"channelName": "redisChannel"
},
"loggerFactory": {
"knownType": "Microsoft"
},
"serializer": {
"knownType": "Json"
},
"handles": [
{
"knownType": "SystemRuntime",
"isBackplaneSource": false,
"name": "systemCache"
},
{
"knownType": "Redis",
"key": "redisConnection",
"isBackplaneSource": true
}
]
}
]
}
Также результаты проверки количества подписчиков в Redis
127.0.0.1:6379> pubsub channels *
1) "redisChannel"
2) "__Booksleeve_MasterChanged"
127.0.0.1:6379> pubsub numsub 1
1) "1"
2) (integer) 0