问题导读
一、你对Redis的持久化了解吗?
追问-1:能否说一下Redis持久化有几种方式?
二、聊一下Redis的内存淘汰机制吧
三、Redis为什么是单线程的?
01
你对Redis的持久化有了解吗?
Redis持久化就是把内存的数据写到磁盘中去,防止服务宕机了内存数据丢失。
Redis有两种持久化机制,分别是RDB(默认) 和 AOF 机制。
1、RDB--Redis DataBase缩写快照:
按照一定的时间将内存的数据以快照的形式保存到硬盘中,对应产生的数据文件为dump.rdb。通过配置文件中的save参数来定义快照的周期。:
2、AOF--Append Only File:
将Redis执行的每次写命令记录到单独的日志文件中,当重启Redis会重新将持久化的日志中文件恢复数据。
当两种方式同时开启时,数据恢复Redis会优先选择AOF恢复。
02
聊一下Redis的内存淘汰机制吧
redis内存淘汰机制大概有下面这几种:
03
Redis为什么是单线程的?
官方FAQ表示,因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽。
既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了(毕竟采用多线程会有很多麻烦!)。
Redis利用队列技术将并发访问变为串行访问。
优点:
1、绝大部分请求是纯粹的内存操作(非常快速)
2、采用单线程,避免了不必要的上下文切换和竞争条件
3、非阻塞IO优点: