1.什么是redis?

它是一种非关系型的数据库,是介于接口服务端与数据库的中间层。

比如一个查询接口,第一次查询从数据库里面查数据,查完后我们把数据存入redis 缓存中,第二次查就可以直接从缓存中读取数据。

一般把什么数据放入redis?答:主要是一些复杂操作,耗费时间长的,比如数据库查询需要 600ms,但是 redis 只需要 20ms;

而且,在接下来几个小时内这个数据都不会发生变化,我们就可以放入缓存数据库中,为什么对时间有要求呢?因为缓存中的数据一般都是有过期时间的,这个开发写代码可以设置。

2.为什么使用 redis?

1.读取速度快。因为缓存是写入到内存中的,普通数据库数据是写入到磁盘,基于内存的相比磁盘是快很多的,但是也有缺点,比如断电后,内存中的数据就会消失,磁盘则不会

2.高并发,减轻数据库压力。一但涉及到大数据量,比如一些商品抢购,或者主页访问量瞬间增大的情况,磁盘读写成千上万次,有性能弊端,容易造成服务器瘫痪,服务器宕机,数据库顶不住,需要缓存分担一些压力

3.redis 的数据类型

主要分为:字符串哈希列表集合有序集合

4.redis 三大问题

4.1 雪崩机制

假如数据库访问量每秒5000个请求,redis 可以抗住每秒4000 个请求。但是redis数据库意外宕机,那么这 5000 个请求就会直接打到数据库中,这个时候数据库就挂掉了,这个时候如果没有其他方案来应对这个故障,DBA直接重启数据库,那么马上又会被新的流量打死,这个就是 redis 的雪崩机制

4.2 缓存穿透

假如一个系统每秒 5000 个请求,但是有 4000 个是黑客发起的攻击,缓存中查不到,数据库也差不到。

比如说,数据库 id 都是从 1 开始,但是黑客发过来的攻击 id 都是负数,所以缓存中差不到,就会直接打到数据库,数据库就会挂掉,这种就是缓存穿透。

4.3 缓存击穿

某个缓存数据库的 key 值访问非常频繁,一直处于高并发访问,但是因为一些原因这个 key 失效了,那么数据流量就把缓存击穿,瞬间打到数据库上