redis缓存穿透、缓存击穿、缓存雪崩和持久化问题

redis缓存穿透、缓存击穿、缓存雪崩和持久化问题

    • 缓存穿透
    • 缓存击穿
    • 缓存雪崩
    • redis持久化
      • RDB
      • AOF

缓存穿透

缓存穿透是指查询一条数据库和缓存都没有的一条数据,就会一直查询数据库,对数据库的访问压力就会增大,比如查询id为-1的数据,缓存穿透的解决方案是:
1.参数校验,比如id<0就直接返回
2.缓存空对象:代码维护较简单,空数据要设置一个短的过期时间。
3.布隆过滤器:代码维护复杂,效果很好。

缓存击穿

缓存击穿是指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,瞬间对数据库的访问压力增大。
解决方案是:
1.在第一次查询数据的时候加锁,然后把数据加入缓存。(单机系统可以用synchronized关键字,分布式系统需要用分布式锁
2.设置热点数据永不过期

缓存雪崩

缓存雪崩 是指在某一个时间段,缓存集中过期失效。此刻无数的请求直接绕开缓存,直接请求数据库。
解决方案是:
1.随机过期时间
2.设置热点数据永不过期

redis持久化

RDB

RDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发
RDB的优点:
redis加载RDB恢复数据远远快于AOF的方式。

RDB的缺点:
每次保存快照数据比较耗性能,所以没办法做到实时备份。
RDB文件使用特定二进制格式保存,redis版本演进过程中有多个格式 的RDB版本,存在老版本redis服务无法兼容新版RDB格式的问题。

AOF

AOF持久化:以独立日志的方式记录每次写命令, 重启时再重新执行AOF文件中的命令达到恢复数据的目的。AOF的主要作用 是解决了数据持久化的实时性,目前已经是Redis持久化的主流方式
AOF的优点:
可以实时备份数据。

AOF的缺点:
相同数据,AOF文件要比RDB文件大。
redis加载AOF恢复数据比较慢。
因为会一直追加命令日志,文件会越来越大,需要定期执行重写操作来降低文件体积。

你可能感兴趣的:(redis,数据库)