我最近将代码从仅使用分布式缓存迁移到使用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