优势
①使用redis代表着高性能还有高并发,高性能很好理解,redis会缓存我们访问的数据。他是基于内存的,第一次访问数据库我们可能需要800ms,但是访问后如果使用redis进行缓存,第二次乃至后面访问相同的数据就只需要去redis获取数据,这个过程会很快,大大提高了系统的性能。
②正确情况mysql数据库大概能够承受到一到两千的并发量,这个时候如果使用redis,大多数请求就直接访问redis,大大分担了数据库的负载,并发量也就上来了,redis可以处理上万的并发量。
问题
引入缓存也会造成一些问题
①双写不一致:在并发的情况下,当一个用户去修改了数据库的某条数据但是还没来得及缓存,这个时候另外一个用户进来访问到的数据还是旧数据。
②
(1)缓存雪崩:由于大量缓存同时过期或Redis宕机,导致数据库面临巨大访问压力,这可能会对整个系统稳定性造成严重影响。
(2)缓存击穿:热点数据过期导致大量请求直接访问数据库,这可能会迅速耗尽数据库资源,造成服务不可用。
(3)缓存穿透:请求不存在的数据项,如果没有适当的策略,将导致数据库面临大量无效查询,增加了不必要的负载。
并发竞争:在Redis中,当多个客户端同时对同一个键进行读写操作时,就会出现并发竞争的问题。可能出现多线程并发的问题来竞争key,一个线程修改了key,线程二又进行赋值等一些操作,导致一些不可预料的结果。