Redis的持久化方式,超级经典

问题展示

解释

持久化

RDB

AOF

注意事项

1、直接双击打开,如果存在dump.rdb文件,Redis会把dump.rdb文件的数据加载到内存,与AOF持久化是否开启无关,与appendonly.aof文件无关

2、AOF持久化开启的情况下,启用配置打开,内存加载的是appendonly.aof文件数据

3、AOF持久化关闭的情况下,启用配置打开,内存加载的是dump.rdb文件的数据

4、AOF持久化开启的情况下,启用配置打开,如果RDB持久化执行,appendonly.aof文件数据会覆盖掉dump.rdb文件的数据


 

问题展示

我们往Redis服务器存入一些数据

Redis的持久化方式,超级经典

然后关闭客户端,再关闭服务器,接着再打开服务器和客户端,查看所有的key,发现数据是空的

Redis的持久化方式,超级经典

解释

上面的现象,这是因为我们的Redis是一个内存数据库,服务器关闭后,内存释放了,所以数据也就丢失了,所以要想保存数据,就得持久化到磁盘中

持久化

Redis有2中持久化方式,都可以在Redis的配置文件redis.windows.conf中配置

Redis的持久化方式,超级经典

  • RDB:默认方式,不需要进行配置,默认就使用这种 机制
  • AOF:日志记录的方式,可以记录每一条命令的操作,可以每一次命令操作后,持久化数据

RDB

默认方式,不需要进行配置,默认就使用这种机制

打开我们的配置文件,找到这个配置

Redis的持久化方式,超级经典

我们改下配置,让一秒内,如果有1个key发生改变,就持久化

Redis的持久化方式,超级经典

现在我们的启动服务器的方式有些变化,不能直接启动了,要让服务器启用配置启动

Redis的持久化方式,超级经典

输入启动exe文件 配置文件 :redis-server.exe redis.windows.conf

Redis的持久化方式,超级经典

 

直接双击启动客户端

Redis的持久化方式,超级经典

往我们的服务器存入数据,发现我们的redis目录下多了一个dump.rdb文件,这个文件就是我们的持久化文件,因为后缀名为rdb,所以就叫我RDB方式

Redis的持久化方式,超级经典

关闭客户端与服务器,重新双击打开,访问我们的数据,就有了

Redis的持久化方式,超级经典

我们上面配置的时间是1秒内有至少有一个key发生变化,就持久化,将来按实际的需求来,我们需要把配置改回原来的状态

Redis的持久化方式,超级经典

AOF

日志记录的方式,可以记录每一条命令的操作,可以每一次命令操作后,持久化数据

打开我们的配置文件,找到这个配置appendonly

默认是no,关闭的,yes代表开启

Redis的持久化方式,超级经典

现在我们开启持久化

Redis的持久化方式,超级经典

同样也是需要指定配置启动服务(先把上面RDB持久化举例产生的dump.rdb文件删除,不删也可以,这里是为了不让你们误解数据是以前的数据)

Redis的持久化方式,超级经典

输入启动exe文件 配置文件 :redis-server.exe redis.windows.conf,发现多了一个appendonly.aof文件,因为 后缀名我aof,所以就较为AOF方式

 Redis的持久化方式,超级经典

 直接双击启动客户端

Redis的持久化方式,超级经典

往我们的服务器存入数据,发现我们的appendonly.aof文件大小变了,也就是文件存入数据了

Redis的持久化方式,超级经典

关闭客户端与服务器,重新双击打开,访问我们的数据,还是没有数据

Redis的持久化方式,超级经典

 

因为直接双击打开的方式,访问的数据是从dump.rdb文件获取的,而我们的AOF方式,日志存在了appendonly.aof文件,所以我们的是得需要用配置文件方式打开

Redis的持久化方式,超级经典

 

Redis的持久化方式,超级经典

双击打开客户端,访问我们的数据,就有了

Redis的持久化方式,超级经典

注意事项

1、直接双击打开,如果存在dump.rdb文件,Redis会把dump.rdb文件的数据加载到内存,与AOF持久化是否开启无关,与appendonly.aof文件无关

现在我们没有dump.rdb文件

Redis的持久化方式,超级经典

直接双击打开,访问,什么数据都没有

Redis的持久化方式,超级经典

使用RDB方式,1秒内改变一个key就持久化

Redis的持久化方式,超级经典

 启用配置启动,保存一个dump.rdb文件,存key为name,value为lindada的数据

Redis的持久化方式,超级经典 现在关闭客户端服务器,直接双击打开

Redis的持久化方式,超级经典

现在我们把时间改为900秒,短时间不持久化 

Redis的持久化方式,超级经典

 开启AOF持久化

Redis的持久化方式,超级经典

 配置启动,插入key为age,value为25的数据,生成一个appendonly.aof文件,然后关闭服务,别让时间久了就把数据保存到dump.rdb文件了

Redis的持久化方式,超级经典

 现在AOF持久化是开启的,我们双击打开服务,查找数据,还是只能拿到dump.rdb文件的数据,与ppendonly.aof文件无关

Redis的持久化方式,超级经典

 

2、AOF持久化开启的情况下,启用配置打开,内存加载的是appendonly.aof文件数据

现在dump.rdb文件也有,appendonly.aof文件也有,AOF持久化处于开启状态

Redis的持久化方式,超级经典

配置文件方式打开服务,获取到的数据只有age,也就是获取到的数据是appendonly.aof文件数据

Redis的持久化方式,超级经典

3、AOF持久化关闭的情况下,启用配置打开,内存加载的是dump.rdb文件的数据

把AOF持久化关闭

Redis的持久化方式,超级经典

 

配置文件方式打开服务,获取到的数据只有name,也就是获取到的数据是dump.rdb文件的数据

Redis的持久化方式,超级经典

4、AOF持久化开启的情况下,启用配置打开,如果RDB持久化执行,appendonly.aof文件数据会覆盖掉dump.rdb文件的数据

现在我们把AOF持久化开启,把RDB持久化时间改为1秒

Redis的持久化方式,超级经典

Redis的持久化方式,超级经典

 

配置文件方式只打开服务器端

Redis的持久化方式,超级经典

我们还没有启动客户端,还没有进行任何操作,发现竟然已经执行了RDB持久化,打开客户端查找

Redis的持久化方式,超级经典

也只是能找到age,这个符合我们的第2条,因为我们现在AOF持久化是开启状态的,也是用配置文件打开的,所以数据也是从appendonly.aof文件加载进内存

现在我们关闭服务,直接双击打开访问查找

Redis的持久化方式,超级经典

发现也是只能查出age数据,这里从第1点可以知道,这数据是从dump.rdb文件加载进内存的,也就是说原来dump.rdb文件里的key为name的数据已经没有了,完全被appendonly.aof文件该覆盖掉

所以我们要注意这个第四点,别把dump.rdb文件里的数据弄没了