我最近将我的代码从仅使用分布式缓存迁移到使用 CacheManager 进行 2 层缓存以提高我的应用程序的速度。
我使用 InMemory 和 Redis 作为背板。
就 InMemory 并将信息存储回 Redis 而言,一切都运行良好,但我正在努力使缓存无效并查看新信息。
我有一个在服务器上运行的控制台应用程序,它执行数据更新,然后使用 CacheManager 中的 AddOrUpdate 方法将新数据推送到缓存中。
问题是我的前端 API 看到过时的数据并且没有更新。
我知道控制台应用程序以前在工作,因为它都在分布式缓存上工作,并且会经常更新。
我已登录 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