3、redis.conf中的持久化相关配置

Redis支持2种持久化策略:snapshot方式和commandlog方式,前者通过将当前内存数据快照周期性写入RDB文件来实现;后者通过在log中记录Redis进程收到的写操作来实现,下次Redis重启时,回放commandlog来恢复数据状态。
        根据实际需求,用户可以选择完全禁用持久化,也可以在同一个Redis实例中同时启用RDB和AOF。
        特别注意:如果部署方式为主从,则不同实例的持久化时机最好错开!避免master和slaves同时进入后台持久化,这可能会降低系统的性能。

1. RDB相关配置
        1) databases
        配置db文件的数目,可以用select <dbid>指令为每个连接指定后续持久化时的db文件,新连接默认均使用db 0
        2) save
        SNAPSHOTTING的持久化方式有多种save策略可供选择,而且支持混用,例如:
          save 900 1
          save 300 100
          save 60  10000
        上述配置的效果是:snapshotting会在3个条件中的任何一个满足时被触发:a. 900s内至少1个key有变化;b. 300s内至少100个key有变化;c. 60s内至少有10000个key有变化
        save条件被触发时,Redis通过fork子进程,由子进程在后台实现异步dump磁盘。根据fork的写时复制策略,若持久化过程中出现很多写入请求,在最坏的情况下,需要的内存是当前数据集所占内存的2倍。
        备注1:上述配置的3个触发条件其实是逐次加强的,哪个条件先满足就先触发那个save策略。
        备注2:如果业务不需要持久化或不需要RDB方式的持久化,可以通过注释掉save配置项来实现
        3) stop-writes-on-bgsave-error
        指定Redis在后台dump磁盘出错时的行为,默认为yes,表示若后台dump出错,则RedisServer拒绝新的写入请求,通过这种方式来引起用户警觉,避免因用户未发现异常而引起更大的事故。
        4) rdbcompression
        RDB文件是否压缩存储,若为yes,会在压缩时消耗一点CPU,但省磁盘空间。
        5) rdbchecksum
        RDB文件是否需要CRC64校验, 若为yes,会在生成RDB文件后计算其CRC64并将结果追加至文件尾,同样,Redis启动Load RDB时,也会先计算该文件的CRC64并与dump时的计算结果对比。
        好处:可以严格保证RDB的完整性及安全性
        代价:会在dump或load时损失10%的性能。如果要最大化Redis的性能,这个配置项应该用no关掉
        6) dbfilename
        指定RDB文件名,默认为dump.rdb 
        7) dir
        指定RDB文件存放目录的路径,若包含多级路径,则相关父路径需事先mkdir出来,否则启动失败。

2. AOF相关配置
        默认情况下,Redis以写RDB文件的方式持久化数据(除非用户主动禁用RDB方式的持久化)。若Redis进程挂掉或机器掉电,则上次save完成时刻至故障时刻这段时间内的新数据会丢失。AOF的引入可以将数据损失的程度减少到1秒或1条写入指令。
        1) appendonly
        配置是否启用AOF持久化,默认为no
        2) appendfilename
        指定aof文件名,默认为appendonly.aof 
        3) appendfsync
        配置aof文件的同步方式,Redis支持3种方式:
         a. no => redis不主动调用fsync,何时刷盘由OS来调度;
         b. always => redis针对每个写入命令均会主动调用fsync刷磁盘;
         c. everysec => 每秒调一次fsync刷盘。
        用户可以根据业务对数据的敏感性选择合适的同步策略。
        4) no-appendfsync-on-rewrite
        指定是否在后台aof文件rewrite期间调用fsync,默认为no,表示要调用fsync(无论后台是否有子进程在刷盘)。备注:Redis在后台写RDB文件或重写afo文件期间会存在大量磁盘IO,此时,在某些linux系统中,调用fsync可能会阻塞。
        5) auto-aof-rewrite-percentage
        指定Redis重写aof文件的条件,默认为100,表示与上次rewrite的aof文件大小相比,当前aof文件增长量超过上次afo文件大小的100%时,就会触发background rewrite。若配置为0,则会禁用自动rewrite。
        6) auto-aof-rewrite-min-size
        指定触发rewrite的aof文件大小。若aof文件小于该值,即使当前文件的增量比例达到auto-aof-rewrite-percentage的配置值,也不会触发自动rewrite。即这两个配置项同时满足时,才会触发rewrite。

3. 需要明确的问题
        1)若同时启用RDB和AFO两种持久化方式,则Redis Server启动时,会加载AOF文件以重建数据集,因为AOF可以保证数据是相对最完整的。
        2)关于RDB和AOF各自的优缺点以及用户如何选择合适的持久化策略,可以参考这里
        3)简言之,若可以忍受数据丢失,只启用RDB即可;若对数据很敏感,可以同时启用RDB和AOF;不建议只启用AOF(注释配置文件的save配置项或通过redis-cli执行save ""),因为一旦如果AOF文件损坏或AOF解析引擎存在bug,整个数据集都无法重建。

时间: 2024-10-11 23:11:38

3、redis.conf中的持久化相关配置的相关文章

在 eclipse中 创建 web 版的 maven 工程以及 进一步了解 pom.xml 中 scope 的相关配置设置问题

1.在 eclipse中 创建 web 版的 maven 工程: a.和 创建 java 版的 maven 工程一样,先选中一个简单的工程(跳过经典模式),后填写坐标(不了解的看先前的博文),在打包方式中选择 war 包,后点击 finish. b.可以看到,在新建 的 javaproject03 的 项目中,只有 webapp目录,而实际的内容并没有.这里我们在每次新建时都要做设置.设置如下: 注:鼠标停在所建的项目上,点击右键进入 properties --> Project Facets

redis.conf中bind绑定IP不对,redis集群创建节点的时候,报错|redi群集密码设置

前言# 我们都知道,redis 的配置文件中,默认绑定接口是 127.0.0.1,也就是本地回环接口,所以是无法从外网连接 redis 服务的.如果想要让外网也能连接使用服务器上的 redis 服务,可以简单地注释掉 bind 这一行.但对于 bind 参数的作用,网上有很多文章的解释都是误人子弟的. 关于bind# 翻看网上的文章,此处多翻译为: 指定 redis 只接收来自于该 IP 地址的请求,如果不进行设置,那么将处理所有请求,在生产环境中最好设置该项.这种解释会搞糊涂初学者,甚至是错误

Docker中Nginx服务器相关配置

工作中经常需要在服务器上来做一下实验,亲自动手看看效果是否与理论描述的相同.用docker可以很方便的配置所需要的环境,以下内容记录了如何用docker配置一个nginx服务器 下载nginx 从默认的中央仓库下载nginx docker pull nginx 启动nginx images并进入后台 docker run -it nginx /bin/bash 通过查看linux发行版知晓用哪个包管理工具 cat /proc/version Linux version 4.14.92-boot2

4、redis.conf中replication配置项说明

注意:在master-slave部署模式下,只需slave实例配置Peplication相关项,各项含义说明如下.        1) slaveof <masterip> <masterport>        slave实例需要配置该项,指向master的(ip, port).        2) masterauth <master-password>        如果master实例启用了密码保护,则该配置项需填master的启动密码:若master未启用密码

Redis的安装和使用之三------redis.conf配置释义

Redis配置文件被分成几大块区域,分别是: 1.通用(general) 2.快照(snapshotting) 3.复制(replication) 4.安全(security) 5.限制(limits) 6.追加模式(append only mode) 7.LUA脚本(lua scripting) 8.Redis集群(redis cluster) 9.慢日志(slow log) 10.延迟监控(latency monitor) 11.事件通知(event notification) 12.高级配

redis的持久化相关操纵

一.redis数据持久化(数据保存在硬盘上) 1. 关系型数据库Mmysql持久化 任何增删改语句都是在硬盘上操作(安全) 断电,硬盘上数据还在 2.非关系型数据库 默认所有的增删改都是在内存中操作(高效不安全) 断电以后内存数据不存在 断电以后redis部分数据会丢失:丢失的数据是保存在在内存 1.redis持久化操作(RDB) redis提供了RDB(Redis DataBase)持久化的功能,这个功能可以将redis在内存中的的状态保存到硬盘中,它可以手动执行. 也可以再redis.con

redis内存优化、持久化以及主从复制

Redis 数据库内存优化参数的配置,每种持久化方式的利与弊以及主从复制的原理以及配置 一.常用内存优化手段与参数 redis的性能如何是完全依赖于内存的,所以我们需要知道如何来控制和节省内存. 首先最重要的一点是不要开启Redis的VM选项,即虚拟内存功能,这个本来是作为Redis存储超出物理内存数据的一种数据在内存与磁盘换入换出的一个持久化策略,但是其内存管理成本非常的高,所以要关闭VM功能,请检查你的redis.conf文件中 vm-enabled 为 no. 其次最好设置下redis.c

mac下,redis集群的安装和配置

1.安装redis,执行命令brew install redis 2.安装完成后,brew info redis,可以查看redis的安装路径 3.cd /usr/local/Cellar/redis/3.0.7 进入redis安装路径 4.在/usr/local/etc下建立cluster/7001,7002,7003目录 5.复制3步骤中的bin目录下的redis-server redis.conf 文件到7001,7002,7003目录, 修改redis.conf中端口为7000,7001

redis的主从复制和持久化

主从复制 虽然redis有持久化机制,但是有时redis服务器重启也会丢失数据,因为redis重启后会将硬盘中的数据恢复到内存中,但是当redis服务器的硬盘损坏了可能就会导致数据丢失,如果通过redis的主从复制就能很好的避免这种单点故障. 主redis数据库有两个从redis,即使其中一台服务器宕机,其他两台服务器照样可以正常工作 主redis和从redis是保持实时同步的,当主redis写入数据时通过主从复制机制会复制到两个从redis服务器上. 只有一个主redis,可以有多个从redi