尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

redis数据持久化

redis数据持久化 一、RDB持久化RDBRedis Backup File把内存中的所有数据都记录到磁盘中当Redis实例故障重启后从磁盘读取快照文件恢复数据redis在正常停机之前会做一次持久化但异常停机会导致数据丢失手动命令#使用redis主进程把内存数据写入磁盘此操作会阻塞所有命令save#另起一个子进程执行rdb避免主进程受到影响bgsave写在redis.conf中redis自动执行#save 时间 key修改次数#如果900秒内至少有1个key被修改就拉起一个bgsave进程save9001#禁用RDBsave#其他配置#是否压缩数据文件建议不开启压缩会消耗cpurdbcompressionyes#RDB文件名称修改名称后原名称将不会读取dbfilename dump.rdb#文件保存的路径目录dir./bgsave执行步骤① fork主进程得到子进程② 子进程共享主进程的内存数据③ 完成fork后读取内存数据并写入RDB文件④使用新的RDB文件替换旧的RDB文件fork采用的是copy-on-write技术① 当主进程执行读操作时访问共享内存② 当主进程执行写操作时则会拷贝一份数据执行写操作二、AOF持久化AOF全称为Append Only File追加文件Redis处理的每一个写命令都会记录在AOF文件可以看作是命令日志文件#是否开启AOF默认为noyes表示开启appendonlyyes#AOF文件名称appendfilenameappendonly.aof#配置AOF记录的频率有三种方式#每执行一次写命令就立刻记录到AOF文件(性能最好消耗最大几乎不会丢数据appendfsync always#写命令执行完先放入AOF缓冲区然后表示每隔1秒将缓冲区数据写到AOF文件是默认方案(性能折中1s内如果宕机数据会丢失appendfsync everysec#写命令执行完先放入AOF缓冲区由操作系统决定何时将缓冲区内容写回磁盘appendfsync noAOF记录的是操作记录RDB记录的是值因为是记录命令AOF文件会比RDB文件大得多而且AOF会记录对同一个key的多次写操作但只有最后一次写操作才有意义通过执行bgwriteaof命令可以让AOF文件执行重写功能用最少的命令达到相同效果bgrewriteaof自动触发重写配置#默认值100 AOF文件比上次文件增长超过多少百分比则触发重写auto-aof-rewrite-percentage100#默认64mb AOF文件体积最小多大以上才触发重写auto-aof-rewrite-min-size 64mb三、混合持久化在开启混合持久化的情况下AOF 重写时会把 Redis 的持久化数据以 RDB 的格式写入到 AOF 文件的开头之后的数据再以 AOF 的格式化追加的文件的末尾从AOF文件中查看到的就不是AOF标准格式的数据因为其中混入的RDB格式的数据redis5.0自动开启混合持久化打开混合持久化#redis-cli 查询是否打开了混合持久化config get aof-use-rdb-preamble#1.永久设置在redis.conf设置aof-use-rdb-preambleyes#2.通过命令行开启重启后生效configsetaof-use-rdb-preambleyes
返回列表