0

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

0 回答 0