1 redis持久化机制
由于redis基于内存运行,如果断电关闭,内存中的数据就不再存在,数据丢失。但是redis支持关机再启动数据依然存在,这就是redis持久化。实则是在某一时刻把redis中的数据写入了磁盘中的持久化文件中。
两种持久化方式
1.1 RDB
RDB是Redis用来进行持久化的一种方式(默认开启的是RDB持久化),是把当前内存中的数据集快照写入磁盘(数据库中所有键值对数据),恢复时是将快照文件直接读到内存里。
原理是:redis创建一个与当前进程数据(变量、环境变量、计数器)完全相同的子进程实现持久化,主进程没有IO操作,保证高性能。子进程将数据写到临时文件中,持久化后,使用临时文件代替之前被持久化好的的文件。
由于redis是单线程的,无法接收来自客服端的大量set请求。fork出新的进程既保证实现持久化,又实现了为向redis发送数据的请求提供响应。
启动redis后,在redis目录下可以看到: 这个dump文件(内存数据的备份)就是rdb持久化生成的临时文件。
其中可以vim redis.congf
这个配置文件,查找dir会发现 dir ./ 也就是 dump.rdb会生成到 dir后面的路径。
而且还要保证redis启动时的路径中包含dump.rdb文件,这如果存在就会加载这个dump,否则就是empty list。
同样可以在redis.conf中,查找dbfilename,修改后面的默认文件名,以使用自定义的dump.rdb文件。