定位热点
定位热点
# 需要 maxmemory-policy 为 LFU 类策略才有采样数据
redis-cli --hotkeys
redis-cli INFO commandstats | head -20
redis-cli OBJECT FREQ mykey读热点:本地缓存 + 短 TTL(伪代码)
读热点:本地缓存 + 短 TTL(伪代码)
def price_of(sku):
v = local_cache.get(sku) # 进程内缓存,TTL 1-5 秒
if v is None:
v = redis.get("price:" + sku)
local_cache.set(sku, v, ttl=3)
return v
# 写热点:拆成 N 个分片,读取时汇总
def incr_counter(name, n=1, shards=16):
redis.incr("cnt:" + name + ":" + str(randrange(shards)))
计数类热点可以先在本地聚合再批量写入,减少对单个 key 的并发写压力;展示时把 N 个分片值求和或取近似。