Redis的持久化机制
在Redis安装及常用命令已经详细讲解了Redis这款菲关系型数据库,其中Redis比起其他非关系型数据库的优势之一,就是Redis支持数据的持久化机制。
Redis是一个内存数据库,Redis数据库中的所有数据都是以缓存的形式存储在内存中的,当redis服务器重启,或者电脑重启,数据会丢失。
为了解决这个问题,我们可以将redis内存中的数据持久化到硬盘中。
Redis持久化机制有两种,分别是RDB和AOF。
默认方式,不需要进行配置,Redis默认就使用这种持久化机制,在一定的时间间隔中,检测key的变化情况,然后持久化数据。
Redis目录下有一个redis.windows.conf
文件,其中有这么一段配置:
1 | save 900 1 #15分钟内有1个key值被改变 |
当Redis数据库满足配置中的要求的时候,Redis服务器就会自动进行持久化,然后会在Redis的目录下生成一个名为dump.rdb
的文件。
当服务器关闭,下一次重启服务器的时候,服务器就会自动读取dump.rdb
中的内容,恢复数据库的原始数据。
RDB的优点
- RDB 是一个非常紧凑(compact)的文件,它保存了 Redis 在某个时间点上的数据集。
- 这种文件非常适合用于进行备份,非常适用于灾难恢复。
- RDB 可以最大化 Redis 的性能:父进程在保存 RDB 文件时唯一要做的就是 fork 出一个子进程,然后这个子进程就会处理接下来的所有保存工作,父进程无须执行任何磁盘 I/O 操作。RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。
RDB的缺点
- RDB操作的时间粒度比较大,如果服务器发生故障,同时Redis的数据非常巨大,那么即便是1秒钟也可能会丢失大量的数据。
AOF
日志记录的方式,可以记录每一条命令的操作,可以每一次命令操作后,持久化数据(消耗性能)。
在redis.windows.conf
文件中,有一个appendonly
属性,默认配置为no,如果需要使用AOF持久化机制,那么将appendonly
修改为yes即可。
同时还应该修改appendfsync属性,设置AOF持久化策略。
1 | appendonly no #关闭AOF |
1 | # appendfsync always #每一次操作都进行持久化 |
如果AOF持久化成功,那么会在Redis目录下生成一个appendonly.aof
的文件。该文件作用与dump.rdb
相似。
AOF的优点
- AOF 的默认策略为每秒钟 fsync 一次,在这种配置下,Redis 仍然可以保持良好的性能,并且就算发生故障停机,也最多只会丢失一秒钟的数据( fsync 会在后台线程执行,所以主线程可以继续努力地处理命令请求)。
AOF的缺点
- 对于相同的数据集来说,AOF 文件的体积通常要大于 RDB 文件的体积。
开启持久化的方式
打开cmd命令提示符窗口,进入Redis目录下。
1 | cd E:\Program Files\Redis-x64-3.2.100 |
启动Redis服务器,并加载配置文件。
1 | redis-server.exe redis.windows.conf |