【问题标题】:Redis: How to distinguish between client tracking invalidation of keys across multiple databasesRedis:如何区分客户端跟踪跨多个数据库的键失效
【发布时间】:2020-10-23 11:39:16
【问题描述】:

有没有办法区分失效适用于哪个数据库?

示例:

跟踪套接字:

CLIENT ID // 77
PSUBSCRIBE __redis__:*

主插座:

CLIENT TRACKING on REDIRECT 77 OPTIN

SELECT 1
SET MYKEY VALUE1
CLIENT CACHING YES
GET MYKEY //VALUE1

SELECT 2
SET MYKEY VALUE2
GET MYKEY //VALUE2

SELECT 1
GET MYKEY //VALUE1

我遇到的问题是跟踪套接字接收到:redis:invalidate 1) MYKEY 当 MYKEY 在数据库 2 中设置时。但是我要跟踪的密钥在数据库 1 中。

没有重新设计应用程序以避免跨数据库的键冲突或为每个数据库创建一个套接字+跟踪,我如何以有意义的方式使用跟踪?

编辑:Redis 6.0.8 独立安装

【问题讨论】:

    标签: redis cache-invalidation


    【解决方案1】:

    Redis documentation找到答案:

    "有一个单独的键命名空间,不被数据库编号划分。所以如果一个客户端缓存了数据库 2 中的键 foo,而其他一些客户端更改了数据库 3 中键 foo 的值,则无效消息仍然会发送。这样我们可以忽略数据库编号,从而减少内存使用和实现复杂性。"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-25
      • 1970-01-01
      • 1970-01-01
      • 2016-05-31
      • 1970-01-01
      • 2020-08-30
      • 2013-12-06
      相关资源
      最近更新 更多