Redis持久化面试题
Redis持久化面试题1.redis中有哪些持久化方式?2.RDB的工作原理3.RDB触发机制4.RDB持久化的缺点5.AOF的工作原理6.开启AOF7.AOF触发机制8.RDB和AOF的优缺点9.RDB和AOF的优先级1.redis中有哪些持久化方式?redis中的持久化有两种方式,分别是RDB和AOF,其中RDB是redis默认的持久化方式。2.RDB的工作原理RDB持久化方式会创建(fo
Redis持久化面试题
1.redis中有哪些持久化方式?
redis中的持久化有两种方式,分别是RDB和AOF,其中RDB是redis默认的持久化方式。
2.RDB的工作原理
RDB持久化方式会创建(fork)一个子进程,子进程中的数据信息和主进程中的数据信息完全相同,主进程进行客户端的数据交互,子进程进行磁盘的IO操作,子进程进行持久化时会产生一个临时文件,并将数据写入到这个临时文件当中,当持久化完成之后会将主线程中的dump.rdb文件替换掉。
3.RDB触发机制
RDB中有以下几种触发持久化的方式:
自动触发RDB持久化
-
redis.conf文件中有一个关于save的配置,如下图,如果900s内有一个数据进行了更新(增删改),那么就会持久化;如果在300s内有10条数据进行了更新那么就会持久化;如果在60s内有10000条数据进行了更新那么就会持久化。即更改数据越多,持久化周期越小。
-
当使用"shutdown"命令关闭redis时会自动持久化
-
当使用"fulldb"命令清除内存中的数据时会自动持久化
手动触发RDB持久化
- 使用save/bgsave命令会持久化,save是使用主进程持久化,会使效率变低,不用;gbsave是使用子进程持久化。
4.RDB持久化的缺点
当redis的服务器突然宕机之后,RDB还没来得及将数据持久化,会使数据丢失。
AOF就是来解决RDB丢失时间长的问题。
5.AOF的工作原理
将Redis的操作日志以追加的方式写入文件,读操作是不记录的,当redis开机的时候,会将AOF日志文件中的命令进行读取操作。
AOF是将命令先记录在缓冲区,缓冲区默认大小为1M,然后定时持久化到AOF持久化文件当中。AOF是没有fork主进程的,使用主进程进行的持久化。
6.开启AOF
redis中AOF默认是关闭的。
在redis.conf文件中,将appendonly改为yes,如下:
7.AOF触发机制
AOF先将命令存在缓冲区,然后定时从缓冲区中向磁盘进行刷新,那么触发AOF从缓冲区向磁盘中刷新的机制是什么呢?
- no:表示当缓冲区数据满了之后再同步到磁盘,这种显然不能使用,如果宕机之后,就会形成和RDB同样的问题。
- always:同步持久化,每次发生数据变更时都会同步到磁盘。
- everysec:表示一秒同步一次,这个也是默认值,但是可能会丢失1s以内的数据。
8.RDB和AOF的优缺点
- RDB:适合数据恢复,数据丢失多
- AOF:保证数据安全,恢复数据慢
9.RDB和AOF的优先级
如果同时开启RDB和AOF的话,那么redis开机之后读取的持久化文件是AOF的持久化文件,并且持久化时是按照AOF的策略去走的。
更多推荐
所有评论(0)