0

无论如何要区分失效适用于哪个数据库?

例子:

跟踪插座:

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

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

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

编辑:Redis 6.0.8 独立安装

4

1 回答 1

0

在Redis 文档中找到了答案:

“有一个单独的键命名空间,不被数据库编号划分。因此,如果客户端正在缓存数据库 2 中的键 foo,并且其他一些客户端更改了数据库 3 中键 foo 的值,则仍将发送无效消息。通过这种方式,我们可以忽略数据库数量,从而减少内存使用和实现复杂性。”

于 2020-11-02T14:59:19.287 回答