«

Redis 缓存雪崩解决

时间:2026-10-8 07:16     作者:emer     分类: 无


Redis 缓存雪崩解决

缓存雪崩是指大量缓存同时失效,请求全部打到数据库,数据库直接挂掉。

1. 什么是缓存雪崩

原理:

和缓存穿透的区别:

2. 产生原因

1)缓存大面积过期:

2)Redis 宕机:

3. 解决方案

方案一:过期时间加随机值

// 不要设置相同过期时间
$expire = 3600 + rand(0, 600);
$redis->setex("key", $expire, $value);

加随机值,让 key 分散过期,不会同时失效。

方案二:缓存永不过期

方案三:Redis 高可用

方案四:熔断降级

4. 代码示例

function getData($id) {
    global $redis, $db;

    $key = "data:".$id;
    $data = $redis->get($key);

    if ($data) {
        return json_decode($data, true);
    }

    // 查数据库
    $data = $db->query("SELECT * FROM table WHERE id=$id");

    // 缓存,过期时间加随机值
    $expire = 3600 + rand(0, 600);
    $redis->setex($key, $expire, json_encode($data));

    return $data;
}

5. 最佳实践

总结

缓存雪崩解决要点:

做高并发系统,缓存雪崩一定要防。

标签: Redis 缓存 雪崩 优化 高并发