Redis数据持久化配置

默认配置

注:默认情况下,持久化配置是关闭的

#持久化开关配置(yes 开启 no 关闭)

appendonly no

#持久化类型

#always: 每次操作都会立即写入aof文件中(性能最低,不推荐)

#everysec: 每秒持久化一次(默认配置)(折中方案,推荐)

#no: 不主动进行同步操作,默认30s一次(redis重启或服务器重启会丢失30内的数据)

appendfsync everysec

默认配置情况下,redis是如何同步保存数据到磁盘上的?

如下配置:

save 900 1
save 300 10
save 60 10000

配置含义:

 900秒内,如果超过1个key被修改,则发起快照保存

 300秒内,如果超过10个key被修改,则发起快照保存

 60秒内,如果1万个key被修改,则发起快照保存

 开启持久化配置(首次配置)

appendonly yes

appendfsync everysec

注:切记,线上redis在运行期间,不要直接修改配置文件,重启redis,这样操作会造成数据全部丢失。

 开启持久化配置(在线修改)

redis执行命令

#查看AOF状态

> config get appendonly
appendonly
no

#在线设置AOF开关为yes

>config set appendonly yes

ok

#修改配置文件(这里如果不修改,下次redis重启时,持久化配置仍然是关闭状态)

appendonly yes

#查看数据

keys *

#结束

开启持久化,如何解决AOF太大的问题?

AOF文件重写解决日志文件太大的问题

配置说明

auto-aof-rewrite-percentage 100        #AOF文件重写增长比例

aof文件增长比例,指当前aof文件比上次重写的增长比例大小。aof重写即在aof文件在一定大小之后,重新将整个内存写到aof文件当中,以反映最新的状态(相当于bgsave)。这样就避免了,aof文件过大而实际内存数据小的问题(频繁修改数据问题).


auto-aof-rewrite-min-size 64mb         #AOF文件重写最小的文件大小

AOF文件重写最小的文件大小,即最开始aof文件必须要达到这个文件时才触发,后面的每次重写就不会根据这个变量了(根据上一次重写完成之后的大小).此变量仅初始化启动redis有效.如果是redis恢复时,则lastSize等于初始aof文件大小.

 AOF文件的重写

AOF为何有重写的机制

redis中的数据是有限的,很多数据可能会自动过期,也有可能会被用户删除,但是这些操作都会被AOF文件记录下来,所有有可能存在AOF文件越来越大的情况,意思就是说,重建数据集根本不需要执行所有AOF记录的命令,为了处理这种情况,会有一种rewrite策略,在redis 2.4之前是需要手动执行BGREWRITEAOF命令来进行重写AOF文件,redis 2.4版本之后提供了自动rewrite的操作。我们可以配置rewrite的策略

就是上面提到的参数

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

最少AOF文件需要达到64mb就会进行重写,重写了之后,当检测到当前的AOP文件增长幅度大于100%,也就是64mb,即当前的AOF文件大小为128mb的时候,就会自动触发对AOF进行重写操作。

快照备份易恢复,文件也小,但是如果遇到宕机等情况的时候快照的数据可能会不完整。AOF备份,数据完整度高,但是随着系统的运行,AOF文件的体积会越来越大,极其占用硬盘的空间,AOF文件的重写在一定程度可以缓解这个问题。

当AOF的备份文件过大时,手动输入bgrewriteaof命令,进行文件重写

手动同步数据

redis执行命令

方式1(会造成redis主进程阻塞,生产环境慎用)

save

方式2(只有在 fork() 子进程时有短暂的阻塞)

bgsave

 方式3:

命令:save m n

save m n 是指在 m 秒内,如果有 n 个键发生改变,则自动触发持久化。

参数 m 和 n 可以在 Redis 的配置文件中找到,例如,save 60 1 则表明在 60 秒内,至少有一个键发生改变,就会触发 RDB 持久化。

自动触发持久化,本质是 Redis 通过判断,如果满足设置的触发条件,自动执行一次 bgsave 命令。 注意:当设置多个 save m n 命令时,满足任意一个条件都会触发持久化

 方式4

flushall

flushall 命令用于清空 Redis 数据库,在生产环境下一定慎用,当 Redis 执行了 flushall 命令之后,则会触发自动持久化,把 RDB 文件清

常用命令

dbsize 查询key数量 

 scan 0 MATCH *playerModule_* 查询包含playerModule_的key数量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑的大象

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值