一、为什么要用Redis?
1、内存数据库,快,很快.......
2、工作单线程worker,串行化、原子操作. (IO线程是多线程)- 避免上下文切换
3、IO模型(epoll), 支撑高并发.
4、kv模型,v具有类型结构.
5、具有本地方法,计算向数据移动。(a,b) => 交集
6、二进制安全,Value最大512M
二、Redis是单线程还是多线程?
6.0版本之前是单线程
6.0版本之后:Io是单线程,worker是多线程
三、Redis数据持久化方案?
Redis是一个内存数据库,一旦断电或服务器进程退出,内存数据库中的数据将全部丢失,所以需要Redis持久化
Redis持久化就是把数据保存在磁盘上,利用永久性存储介质将数据保存,在特定的时间将保存的数据进行恢复的工作机制
Redis提供两种持久化机制:
-
RDB(Redis DataBase):存储数据结果,关注点在数据(快照)
-
AOF(Append Only File):存储操作过程,关注点在数据的操作过程(命令)
RDB与AOF触发方式、优缺点:
RDB的触发方式:
-
手动触发:通过命令手动生成快照 (save,bgsave)
-
自动触发:通过配置参数的设置触发自动生成快照
缺点:
-
快照时间有间隔,不能实时备份,丢失数据可能会比较多
-
开启子进程备份数据,在数据集比较庞大时,fork()可能会非常耗时,造成服务器在一定时间内停止处理客户端。
优点:
1.恢复数据比较快
2.备份的文件就是原始内存数据的大小,不会额外增加数据占用,
AOF的触发方式
1.手动触发
通过bgrewriteaof
命令:重新AOF持久化生成aof文件(触发重写)
2.自动触发
默认情况,redis是没有开启AOF(默认使用RDB持久化),需要通过配置文件开启
AOF的优缺点
优点:
-
数据安全性高,不易丢数据
-
AOF文件有序保存了所有写操作,可读性强
缺点:
-
AOF方式生成文件体积变大
-
数据恢复速度比RDB慢
RDB与AOF触发方式、优缺点具体如下:
四、百万Redis,key如何模糊查找?
五、Redis面试题-缓存穿透,缓存击穿,缓存雪崩
1 穿 透: 两边都不存在(皇帝的新装) (黑名单) (布隆过滤器)
2 击****穿 :一个热点的key失效了,这时大量的并发请求直接到达数据库. (提前预热)
3 雪崩 :大量key同时失效 (避免大量的key同一时间失效,错峰)