标签:truncated down 复制 redis服务器 配置 16px filename err 并且
Redis提供了为持久化提供了两种方法:第一种是快照:他可以将存在某一时刻的所有数据都写入硬盘里面。第二种是只追加文件(AOF):它会在执行命令时,将被执行的写命令复制到硬盘里面。
Redis支持持久化可以在redis.conf文件中配置,具体参数如下:
1 # 快照的设置参数 2 save 900 1 # 表示从最近一次创建快照开始算起,当900秒之内有1此写入这个条件被满足时,Redis将会自动执行BGSAVE命令。如果设置了多个save 参数,其中任意一个满足都会触发执行。 3 save 300 10 4 save 60 10000 5 stop-writes-on-bgsave-error yes 6 rdbcompression yes # 写入的数据是否压缩 7 8 rdbchecksum yes 9 dbfilename dump.rdb # 快照写入的文件名,可以自定义名称。 10 11 # 快照文件和AOF文件指定的存储位置, 可以自定义路径。 12 dir /var/lib/redis 13 14 15 # AOF的设置参数 16 appendonly yes # 打开AOF。 17 appendfilename "appendonly.aof" # 写入的文件名称。 18 appendfsync everysec # 写入的频率: everysec(每秒执行一次写入)、always(执行一个命令写入一个到硬盘)、no(让操作系统来决定何时写入) 19 no-appendfsync-on-rewrite no 20 auto-aof-rewrite-percentage 100 # 当AOF文件大于64MB并且比上一次重写之后的体积大了一倍时,将会自动执行BGWRITEAOF命令。
21 auto-aof-rewrite-min-size 64mb # 当AOF文件大于64MB并且比上一次重写之后的体积大了一倍时,将会自动执行BGWRITEAOF命令。 22 aof-load-truncated yes
一、快照持久化:通过创建快照来获取存储的内存里面的数据在某个时间点上的副本。如果某一个时刻Redis系统崩溃,重新启动后将从快照文件中获取到的是最近一次写入成功的文本,而这之后到崩溃时的数据将被丢失。
创建方法:1、通过客户端向redis服务器发送BGSAVE命令开始执行写入。(此时会fork一个子进程,然后子进程负责将快照写入硬盘,父进程则继续执行命令)
2、通过客户端向redis服务器发送SAVE命令开始执行写入。(此时不会创建一个子进程,而是直接在父进程执行快照的写入,但是此时父进程将会阻塞命令的执行)(当服务器收到shutdown命令时也会执行SAVE命令来保存快照)
大数据情况:当Redis中存储的数据量只有几个GB时,使用BGSAVE保存不会出现明显的时间延迟,但是当存储的数据量有十几个GB时,并且剩余的空闲内存不多时,这时执行BGSAVE会导致系统长时间的停顿。
解决办法:我们可以考虑关闭自动保存功能,通过手动执行BGSAVE或SAVE来进行持久化。其中手动执行BGSAVE一样会导致停顿,但是可以选择停顿出现的时间段。手动执行SAVE虽然会导致无法执行命令,但是我们由于不会创建子进程争夺资源,速度也会比BGSAVE快,同样也可以选择停顿的时间段。
二、AOF持久化:会将被执行的写命令写道AOF未见的尾部,由此来记录数据发生的变化。因此Redis只要将AOF文件中的命令从头到尾执行一遍,就可以恢复之前的数据集。
写入频率:everysec(每秒执行一次写入):最佳的频率,即使遇到Redis崩溃,丢失的也只是一秒内的数据。always(执行一个命令写入一个到硬盘):这种写入模式在遇到Redis崩溃时,丢失的数据最少,但是会严重影响Redis的性能。no(让操作系统来决定何时写入):Redis将不会对AOF文件执行任何显示的同步操作,而是由操作系统决定应该何时对AOF文件执行同步,但是这个情况会导致Redis遇到崩溃时丢失不定量的数据,极不稳定。
问题:当Redis不断的运行过程中,AOF不会断的增大。为了解决这个问题,我们可以向Redis服务器发送BGREWRITEAOF命令,她会通过这个命令移除AOF文件中的冗余命令来重写AOF文件,使其体积变小。其工作原理和BGSAVE非常相似,创建一个子进程来实现清除AOF中冗余的信息。
三、操作:
使用redis模块连接redis服务器,然后设置一百万个键值对。
1 import redis 2 3 r = redis.Redis(host=‘localhost‘, port=6379, db = 0) 4 5 for i in range(0, 1000000): 6 r.set(i, ‘test_%s‘ %i) 7 print(‘ok‘)
然后执行bgsave命令
通过配置文件中文件存储位置查找文件到快照文件
尝试打开看一下dump.rdb文件的位置:(经过压缩处理之后文件的数据)
标签:truncated down 复制 redis服务器 配置 16px filename err 并且
原文地址:https://www.cnblogs.com/GoodRnne/p/10584123.html