Files
life-echo/api/.agents/skills/redis-development/rules/conn-client-cache.md
Sully 53e0065e3e refactor(api): TOML 配置 SSOT、统一错误契约、Auth/事务加固与可观测性 (#33)
配置 SSOT(TOML + .env)
统一错误契约
Auth 与事务边界
Redis / Celery 可靠性:业务 Redis(DB/0)与 Celery broker/backend(DB/1)显式拆分;连接池、sync client
可观测性(OpenTelemetry + LGTM)
2026-05-22 13:44:50 +08:00

2.3 KiB

title, impact, impactDescription, tags, description, alwaysApply
title impact impactDescription tags description alwaysApply
Use Client-Side Caching for Frequently Read Data HIGH Reduces network round-trips for repeated reads caching, performance, client-side, tracking Use Client-Side Caching for Frequently Read Data true

Use Client-Side Caching for Frequently Read Data

Use a connection with client-side caching enabled for any data that will be read frequently but written only occasionally. Client-side caching avoids contacting the server for repeated access to data that has recently been read, reducing network traffic and improving performance.

Correct: Enable client-side caching with RESP3 protocol for frequently accessed data.

Python (redis-py):

import redis

# Enable client-side caching with RESP3
client = redis.Redis(
    host='localhost',
    port=6379,
    protocol=3,  # RESP3 required for client-side caching
    cache_config=redis.CacheConfig(max_size=1000)
)

# Cached reads avoid server round-trips
value = client.get("frequently:read:key")

Java (Jedis):

import redis.clients.jedis.DefaultJedisClientConfig;
import redis.clients.jedis.UnifiedJedis;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.CacheConfig;

HostAndPort endpoint = new HostAndPort("localhost", 6379);

DefaultJedisClientConfig config = DefaultJedisClientConfig
    .builder()
    .password("secretPassword")
    .protocol(RedisProtocol.RESP3)
    .build();

CacheConfig cacheConfig = CacheConfig.builder().maxSize(1000).build();

UnifiedJedis client = new UnifiedJedis(endpoint, config, cacheConfig);

When to use:

  • Configuration data read frequently, updated rarely
  • User session data accessed on every request
  • Feature flags or settings checked repeatedly
  • Any read-heavy workload with low write frequency

When NOT needed:

  • Data that changes frequently (cache invalidation overhead outweighs benefits)
  • Write-heavy workloads
  • Simple applications where network latency is not a bottleneck
  • When you need guaranteed real-time consistency

Trade-offs:

  • Adds memory overhead on the client
  • Requires RESP3 protocol
  • Cache invalidation adds complexity for frequently changing data

Reference: Client-side caching