Redis一般用于做数据库的缓存,作用:
1. 提升性能
2. 为数据库挡住大量并发
基本使用流程:
1. 先从Redis查询数据
2. Redis存在就直接返回
3. Redis没有再查询数据库
4. 数据库有就保存到Redis中,返回数据
5. 数据库没有就返回空
Redis在高并发情况下可能出现的问题:
问题 | 原因 | 解决方案 |
雪崩,大量请求在Redis中查询不到数据,直接访问数据库,导致数据库宕机 | 1. Redis服务器宕机或重启 2. 热点数据同时过期 |
1. 搭建Redis集群 2. 将热点数据的过期时间设置为随机值,避免同时过期 |
击穿,大量的线程并发访问Redis,同时穿过redis缓存,直接访问数据库导致数据库压力过大而宕机 | 1.线程的高并发,前面的线程还没有将数据返回到Redis中,后面的线程就有已经到redis中查询了。 | 1.通过锁机制,对Redis操作进行同步DCL双检锁 |
穿透,大量的并发查询数据库中没有的数据,Redis中也没有,请求直接打到数据库中,导致数据库压力过大而宕机。 | 1.数据库中 没有数据,Redis中没有保存,直接查询数据 |