CLIENT TRACKING
语法
CLIENT TRACKING <ON | OFF> [REDIRECT client-id] [PREFIX prefix [PREFIX prefix ...]] [BCAST] [OPTIN] [OPTOUT] [NOLOOP]
- 可用版本
- 6.0.0
- 时间复杂度
- O(1)。某些选项可能会增加额外的复杂度。
- ACL 类别
-
@slow
,@connection
,
此命令启用 Redis 服务器的跟踪功能,该功能用于 服务器辅助的客户端缓存。
启用跟踪后,Redis 会记住连接请求的键,以便在修改这些键时,稍后发送失效消息。失效消息将在同一个连接中发送(仅在使用 RESP3 协议时可用),或者在不同的连接中重定向(也适用于 RESP2 和 Pub/Sub)。还提供了一种特殊的“广播”模式,在这种模式下,参与此协议的客户端通过订阅给定的键前缀来接收所有通知,而与它们请求的键无关。鉴于参数的复杂性,请参考 主要的客户端缓存文档 了解详细信息。此手册页仅作为此子命令选项的参考。
要启用跟踪,请使用
CLIENT TRACKING on ... options ...
此功能将在当前连接的整个生命周期内保持活动状态,除非在某个时刻使用 CLIENT TRACKING off
关闭跟踪。
以下是修改启用跟踪时命令行为的选项列表
REDIRECT <id>
:将失效消息发送到指定 ID 的连接。连接必须存在。您可以使用CLIENT ID
获取连接的 ID。如果我们重定向到的连接已终止,则在 RESP3 模式下,启用跟踪的连接将接收tracking-redir-broken
推送消息以信号通知此情况。BCAST
:在广播模式下启用跟踪。在此模式下,将针对所有指定的 前缀报告失效消息,而与连接请求的键无关。相反,当未启用广播模式时,Redis 将跟踪哪些键是使用只读命令获取的,并且仅针对这些键报告失效消息。PREFIX <prefix>
:对于广播,注册给定的键前缀,以便仅为以该字符串开头的键提供通知。此选项可以多次提供以注册多个前缀。如果在没有此选项的情况下启用广播,Redis 将针对每个键发送通知。您不能删除单个前缀,但可以通过禁用并重新启用跟踪来删除所有前缀。使用此选项会增加 O(N^2) 的额外时间复杂度,其中 N 是跟踪的总前缀数量。OPTIN
:当广播未处于活动状态时,通常不跟踪只读命令中的键,除非它们是在CLIENT CACHING yes
命令之后立即调用的。OPTOUT
:当广播未处于活动状态时,通常会跟踪只读命令中的键,除非它们是在CLIENT CACHING no
命令之后立即调用的。NOLOOP
:不要发送有关此连接本身修改的键的通知。
RESP2/RESP3 响应
简单字符串响应: 如果连接成功进入跟踪模式,或者如果成功禁用跟踪模式,则为OK
。否则,将返回错误。