Redis 6.0 Client‑Side Caching and Tracking Feature Overview
This article explains Redis 6.0’s new client‑side caching feature, detailing the tracking command, its options such as BCAST, PREFIX, OPTIN, OPTOUT, NOLOOP and REDIRECT, and provides step‑by‑step examples using telnet and redis‑cli to demonstrate how invalidation messages are generated and handled.
Redis 6.0 introduces several new features, among which the client‑side caching (tracking) mechanism is a major addition. It allows the server to remember which keys a client has read and to push invalidation messages when those keys change.
The core command is:
CLIENT TRACKING ON|OFF [REDIRECT client-id] [PREFIX prefix] [BCAST] [OPTIN] [OPTOUT] [NOLOOP]Key options:
REDIRECT : forwards invalidation messages to another client (useful for RESP2 clients).
BCAST : enables broadcast mode, sending invalidations for all keys (or matching prefixes) regardless of whether the client has read them.
PREFIX : in broadcast mode, restricts notifications to keys that start with the given prefix.
OPTIN : only keys read after a CLIENT CACHING YES command are tracked.
OPTOUT : disables tracking for keys read after a CLIENT CACHING OFF command.
NOLOOP : prevents the client that performed the modification from receiving its own invalidation.
Typical workflow:
Start a Redis 6.x server (e.g., redis-server ).
Connect with telnet and enable RESP3: hello 3 .
Enable tracking: client tracking on (optionally add bcast , prefix , etc.).
Read a key (e.g., get a ) to register it.
Modify the key from another client; the tracking client receives an invalidate message.
Examples:
client tracking on
+OK
set a 1
+OK
get a
$1
1When another client runs set a 2 , the tracking client sees:
>2
$10
invalidate
*1
$1
aUsing BCAST with PREFIX a tracks all keys starting with a . Only those keys generate invalidations, while unrelated keys (e.g., feed:... ) do not.
With OPTIN , tracking starts only after CLIENT CACHING YES is issued; without it, read‑only keys are not tracked. Conversely, OPTOUT stops tracking after CLIENT CACHING OFF .
The NOLOOP flag suppresses self‑generated invalidations, useful to avoid redundant notifications.
Finally, REDIRECT can forward invalidations to a client that only understands RESP2, by sending them through a Pub/Sub channel such as __redis__:invalidate .
All of these features are implemented in Redis’s tracking.c source file.
Architecture Digest
Focusing on Java backend development, covering application architecture from top-tier internet companies (high availability, high performance, high stability), big data, machine learning, Java architecture, and other popular fields.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.