Redis Clustering

作者 redisa84871d065f3MIT收錄於 2026年10月8日更新於 2026年10月8日

Redis Cluster and replication guidance covering hash tags for multi-key operations, avoiding CROSSSLOT errors, and reading from replicas to scale read-heavy workloads. Use when designing keys for a sharded Redis Cluster, debugging CROSSSLOT errors on MGET / SDIFF / pipelines, configuring a multi-key transaction in a cluster, or routing reads to replicas for caches, analytics, or dashboards.

AI 產生的概覽

關於 Redis Cluster 雜湊標籤多鍵操作與副本讀取路由的指引。

功能
此技能提供關於在分片 Redis Cluster 以及獨立主從複寫中設計鍵與路由讀取的書面指引。它說明雜湊標籤如何讓 MGET、SDIFF、交易與管線等多鍵命令落在同一個槽位以避免 CROSSSLOT 錯誤,以及如何將讀取流量送往副本。它也說明副本讀取的一致性取捨,並指向兩份參考文件。
適用情境
在為 Redis Cluster 部署設計鍵、偵錯多鍵命令的 CROSSSLOT 錯誤、實作涉及多個鍵的交易或 Lua 指令碼,或在不增加分片的情況下擴充讀取密集負載時使用。
執行需求
不隨附指令碼,僅為說明文件加兩份參考文件。套用範例需要 Redis Cluster 或主從複寫部署,以及 redis-py 之類的 Redis 用戶端函式庫。

Redis Clustering

Guidance for designing keys and routing reads in a sharded Redis Cluster (and in standalone primary/replica replication). Covers the two failure modes that bite most new cluster users: CROSSSLOT errors on multi-key operations, and overloading primaries with read traffic.

When to apply

  • Designing keys for a Redis Cluster deployment.
  • Debugging a CROSSSLOT error on MGET, SDIFF, transactions, or pipelines.
  • Implementing transactions / Lua scripts that touch multiple keys.
  • Scaling out read traffic without adding shards.

1. Hash tags for multi-key operations

Redis Cluster distributes keys across 16,384 slots by hashing the key name. Any command that touches multiple keys (MGET, SDIFF, SUNIONSTORE, transactions, pipelines, Lua scripts with multiple KEYS[]) requires all keys to live on the same slot — otherwise the server returns a CROSSSLOT error.

Hash tags force this: the part between { and } is the only thing hashed for slot assignment, so two keys sharing a hash tag always land together.

python
# Same slot — multi-key ops workredis.set("{user:1001}:profile",  "...")redis.set("{user:1001}:settings", "...")redis.lmove("{user:1001}:pending", "{user:1001}:processed", "LEFT", "RIGHT")
python
# Different keys, no hash tag — CROSSSLOT on multi-key commands in cluster moderedis.set("user:1001:profile",  "...")redis.set("user:1001:settings", "...")pipe = redis.pipeline()pipe.get("user:1001:profile")pipe.get("user:1001:settings")pipe.execute()  # CROSSSLOT error in cluster

Rules of thumb:

  • Use a tag scoped to the meaningful entity, e.g. {user:1001}. Avoid bare {1001} — unrelated namespaces (purchase:{1001}, employee:{1001}) would all collide on the same slot.
  • Only tag where you actually need multi-key ops. Tagging everything creates hotspots and defeats the point of sharding.
  • A single-key command on a hash-tagged key works fine, so adding tags later is incremental — but renaming keys in production is painful, so plan tagging up front for entities you'll group.

See references/hash-tags.md [blocked].

2. Read replicas for read-heavy workloads

If reads dominate writes, route them to replicas to free primary capacity. Works both in Redis Cluster (each shard has 1+ replica) and in standalone primary/replica replication.

python
# Redis Cluster: enable replica reads on the clientfrom redis.cluster import RedisCluster
rc = RedisCluster(host="localhost", port=6379, read_from_replicas=True)rc.set("key", "value")     # → primaryvalue = rc.get("key")       # → may be served by a replica

For non-cluster setups, point two clients at the right nodes:

python
primary = Redis(host="primary-host", port=6379)replica = Redis(host="replica-host", port=6379)primary.set("key", "value")value = replica.get("key")

The trade-off is consistency: replicas are eventually consistent. Don't read your own writes from a replica; don't use replica reads for anything that requires strict freshness (financial balances, idempotency state). Good fits: cache layers, analytics, dashboards, recommendation feeds.

See references/read-replicas.md [blocked].

References

來源與署名

來源:redis/agent-skills位於plugins/redis-development/skills/redis-clustering提交a84871d

授權條款: MIT

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架