redis为什么要做持久化及持久化的方式 您所在的位置:网站首页 rdb默认时间 redis为什么要做持久化及持久化的方式

redis为什么要做持久化及持久化的方式

2023-08-01 05:40| 来源: 网络整理| 查看: 265

1 redis为什么要做持久化

        许多小伙伴会去了解redis做持久化的方式,因为这确实非常有用,但是我们为什么要对redis做持久化?明明我们在本地自己搭环境的时候有重启过计算机,但是在重启后甚至过了几个月后redis中的数据仍然存在。没错,当我们在本地装了redis,并且在redis中写了数据,重启计算机后数据依然会存在。

        redis本身运行时数据保存在内存中,那么在关闭redis的进程或者关闭计算机后数据肯定被会操作系统从内存中清掉。redis默认采用了一种持久化方式,即RDB (Redis DataBase)——可以在redis的目录中找到dump.rdb文件,这就是使用RDB方式做持久化后生成的数据文件。所以,redis如果没有做持久化,在重启redis后,数据会丢失,而redis默认就采用了一种持久化方式,即RDB。

 

2 redis的持久化方式

        redis的持久化方式有两种,RDB (Redis DataBase)和 AOF (Append Only File),下面分别对两种持久化方式做一个介绍。

2.1 RDB (Redis DataBase)

        RDB方式采用的思想是定时将内存中的数据进行快照,并写入dump.rdb文件当中,这个文件当中所存储的就是当前redis环境中的配置以及数据。每次当redis重启之后,redis会先读dump.rdb文件,将数据从硬盘写入到内存中。

2.1.1 RDB模式的配置方式

        在redis的配置文件redis.conf中搜索save,这一个save可以设置在指定时间内,更新操作达到了固定次数,就将数据同步到数据文件,这里可以写多个save多条件配合使用。比如以下代码所示。

# 表示900秒内有一次更改,或者900秒内有10次更改,或者60秒内有10000此更改执行同步操作 save 900 1 save 300 10 save 60 10000

        另外,如果想不使用RDB做持久化了,可以不配置任何的save,或者将save配成空字符串,如下图所示。

save "" 2.1.2 dbfilename与dir

        在redis的配置文件中如果使用RDB的方式做持久化,除了要注意save的配置外,还有两个配置需注意。其中一个是dbfilename,这一个配置表示存储的快照文件(数据文件)的文件名,redis默认为dump.rdb,所以我们看到redis目录中会有这样一个文件,这个文件中存放了二进制的内容。另外一个是dir,dir的配置表示了dbfilename所配置的这一个文件的路径,这里最好配一个绝对路径,因为如果使用了相对路径,那么通过不同的方式其启动redis可能会出现文件找不到导致数据前后不一致的情况发生。

 

2.2 AOF(Append-only file)

        AOP模式做持久化写入磁盘文件的是写的操作命令,也就是说使用AOF会将客户端对于redis的操作(查询除外)以一个字符串的形式记录到磁盘的文件中去,而在启动redis的时候会去读取这一个文件,将命令执行。

2.2.1 AOF模式的配置方式

        redis默认是关闭AOF模式持久化的,如果要使用需要修改一下配置:

# 默认为no,需修改为yes appendonly yes # AOF默认的持久化文件的文件名称 appendfilename "appendonly.aof"

        而指定更新日志条件的同步策略有三个可选条件:

# 当操作系统进行数据缓存同步到磁盘文件 # appendfsync no # 同步持久化,当数据发生变更时,立即同步到磁盘文件(效率慢些,能保证数据的完整性) # appendfsync always # 每秒同步一次(默认值,也是最佳的选择,速度快,可能会丢失一秒以内的数据(最多不过2秒)) appendfsync everysec

        另外,可以配置当持久化的文件到达一定程度后,进行重写,为什么要进行重写?由于AOF模式持久化记录的是操作命令,比如说当有这两个命令set key "value1", set key "value2"依次执行后,实际上要恢复数据只需要执行set key "value2"即可。经过类似的压缩,可以为原本已经很大的文件“瘦身”,以下的内容,即为执行此“瘦身”操作的配置。

# 当AOF的持久化文件大小的增长率大于此配置时,自动开启重写,redis会自动执行“BGREWRITEAOF”命令; auto-aof-rewrite-percentage 100 # 当AOF的持久化文件大小大于此配置时,自动开启重写,redis会自动执行“BGREWRITEAOF”命令; auto-aof-rewrite-min-size 3000mb 2.2.2 AOF模式的优缺点

        AOF模式的优点如下:

     (1)AOF模式可以更好的保护数据不丢失,在redis因为非正常原因挂掉时,其保存数据的完整度理论上高于RDB模式,因为采用appendfsync everysec去写入持久化文件,最多丢失一秒到两秒的数据;而RDB模式丢失的数据根据其配置的写入频率决定;

     (2)AOF写入性能高,这归功于其是以append-only的方式写入;

     而AOF的缺点如下:

     (1)对于同样的数据,通常AOF文件的大小回比RDB的要大;

     (2)因为AOF存的是命令而不是数据,所以恢复数据时可能较慢。

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有