客户跟踪
Syntax
CLIENT TRACKING <ON | OFF> [REDIRECT client-id] [PREFIX prefix [PREFIX prefix ...]] [BCAST] [OPTIN] [OPTOUT] [NOLOOP]
- Available since:
- 6.0.0
- Time complexity:
- O(1). Some options may introduce additional complexity.
- ACL categories:
-
@slow
,@connection
,
此命令启用Redis服务器的跟踪功能,用于服务器辅助的客户端缓存。
当启用跟踪时,Redis会记住连接请求的键,以便在这些键被修改时发送失效消息。失效消息可以在同一连接中发送(仅在RESP3协议可用时)或重定向到不同的连接(在RESP2和Pub/Sub中也可用)。有一种特殊的广播模式可用,参与此协议的客户端只需订阅给定的键前缀即可接收每个通知,无论它们请求了哪些键。鉴于该主题的复杂性,请参阅主客户端缓存文档以获取详细信息。本手册页面仅作为此子命令选项的参考。
为了启用跟踪,请使用:
CLIENT TRACKING on ... options ...
该功能将在当前连接中保持激活状态,除非在某个时刻使用CLIENT TRACKING off
关闭跟踪。
以下是启用跟踪时修改命令行为的选项列表:
REDIRECT
: 向指定ID的连接发送失效消息。该连接必须存在。您可以使用CLIENT ID
获取连接的ID。如果我们重定向的连接被终止,在RESP3模式下,启用了跟踪的连接将收到tracking-redir-broken
推送消息以指示该情况。BCAST
: 启用广播模式下的跟踪。在此模式下,无论连接请求的键是什么,都会报告所有指定前缀的失效消息。相反,当未启用广播模式时,Redis 将跟踪使用只读命令获取的键,并仅报告这些键的失效消息。PREFIX
: 用于广播,注册一个给定的键前缀,以便仅为此字符串开头的键提供通知。此选项可以多次给出以注册多个前缀。如果启用了广播但没有此选项,Redis 将为每个键发送通知。您不能删除单个前缀,但可以通过禁用和重新启用跟踪来删除所有前缀。使用此选项会增加 O(N^2) 的额外时间复杂度,其中 N 是跟踪的前缀总数。OPTIN
: 当广播未激活时,通常不跟踪只读命令中的键,除非它们在CLIENT CACHING yes
命令之后立即调用。OPTOUT
: 当广播未激活时,通常在只读命令中跟踪键,除非它们在CLIENT CACHING no
命令之后立即调用。NOLOOP
: 不发送关于此连接本身修改的键的通知。
RESP2/RESP3 回复
Simple string reply:OK
if the connection was successfully put in tracking mode or if the tracking mode was successfully disabled. Otherwise, an error is returned.