是否有任何方法来区分失效适用于哪个数据库?
例子:
跟踪插座:
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独立安装
1条答案
按热度按时间goqiplq21#
在redis文档中找到了答案:
“有一个单一的密钥命名空间,而不是被数据库编号分割。因此,如果一个客户机正在缓存 db2 中的键foo,而另一个客户机更改了数据库3中的键foo的值,那么仍然会发送一条失效消息。这样我们就可以忽略数据库数量,从而减少内存使用量和实现复杂性。”