redis:如何区分跨多个数据库的密钥的客户端跟踪失效

t3irkdon  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(456)

是否有任何方法来区分失效适用于哪个数据库?
例子:
跟踪插座:

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)在 db2 中设置mykey时的mykey。不过,我想跟踪的关键是数据库1。
除了重新设计应用程序以避免数据库间的键冲突,或者为每个数据库+跟踪创建一个套接字之外,我如何以有意义的方式使用跟踪?
编辑:redis 6.0.8独立安装

goqiplq2

goqiplq21#

在redis文档中找到了答案:
“有一个单一的密钥命名空间,而不是被数据库编号分割。因此,如果一个客户机正在缓存 db2 中的键foo,而另一个客户机更改了数据库3中的键foo的值,那么仍然会发送一条失效消息。这样我们就可以忽略数据库数量,从而减少内存使用量和实现复杂性。”

相关问题