艳苹的笔记
艳苹的笔记Lv1
最近搞Redis缓存的时候,发现有个坑特别容易踩 就是缓存雪崩问题,一堆key同时过期,请求全打到数据库上,直接给干崩了。后来用了随机过期时间,给每个key的TTL加个几十秒的随机值,分散开就好多了。还有缓存穿透也挺烦的,查不存在的key,一直查数据库。现在都用布隆过滤器先挡一下,或者直接缓存空对象。

// 简单示例:设置缓存时加随机过期时间
$cacheKey = 'user_data_' . $userId;
$ttl = 3600 + rand(0, 300); // 基础1小时+随机5分钟内
$redis->setex($cacheKey, $ttl, $userData);


感觉Redis用得好真是能抗住不少压力,但设计key的时候得想清楚,别乱来。上次有个同事把整个用户对象序列化存一个string里,更新的时候贼麻烦 还是hash结构香一点,更新字段方便。