redis的数据持久化
来源:互联网 发布:java读取dwg文件 编辑:程序博客网 时间:2024/05/16 11:49
redis的数据持久化有两种方式:rdb方式,aof方式
rdb方式:对内存中的数据进行快照,将其存储在硬盘中
集中进行快照的方式:
1.根据配置文件进行快照
save 900 10 意思是在900秒之内,执行了10次或者10次以上的改动次数(不包括获取键值,只是改动),会自动的执行快照。新的快照文件会覆盖旧的快照文件
2.用户执行save或者bgsave的时候
一般情况下,save命令会阻塞来自客户端的请求,一般不用
bgsave是异步的执行快照,一般用这个
3.用户执行flushall命令的时候
这个命令会清楚redis内存数据库中的所有数据。进行快照的条件就是:有自定义的快照条件,无论是否触发。例如:save 900 10
4.执行复制的时候
这个就是在主从复制的时候,无论是否有自定义的快照条件或者没有手动执行快照命令,都会执行快照
快照文件的存储路径在redis.conf的dir, 快照文件的名字在dbfilename设置
rdb快照的原理:redis会复制一份当前进程的副本,主进程继续接受客户端的请求,子进程将fork瞬间的内存中的数据复制到系统的临时文件中,当子进程完成内存数据的复制后,会会换掉旧的dump.rdb.也就是说,复制的数据是fork时内存中的数据,之后如果还有修改键的操作,会将该片数据复制一份
aof方式
aof方式就是将执行的修改键的操作命令保存起来,在从硬盘恢复数据的时候,会重新执行这些命令
aof文件的存储位置和rdb的位置一样,在配置文件的dir,文件的名字在appendfilename "appendonly.aof"
aof触发的条件在配置文件中,
auto-aof-rewrite-precentage 100
auto-aof-rewrite-min-size 64mb
意思是,当前的aof文件的大小超过上次重写时aof文件大小的百分比多少事执行重写,第二个参数的意思是,限制了允许重写的最小aof文件大小
有的时候,会有覆盖命令,例如:set foo 1 set foo 2
这就会导致在aof文件中,造成命令的冗余,所以为了减小appendonly.aof文件的大小,我们可以手动执行重写bgrewriteaof命令,可以手动的执行重写命令,并且删除冗余的数据
我们在讲数据存储到硬盘的过程中,由于系统缓存的特性,他会将aof文件放在系统的缓存当中,当每过30秒,会执行一次写硬盘的操作,这就可能导致在这30秒内系统宕机,造成数据的丢失,所以我们可以在可以在配置文件对系统存储aof文件的缓存时间修改
appendfsync everysec 意思是,每秒会执行一次同步操作
- redis的数据持久化
- redis数据持久化
- Redis数据持久化
- redis数据持久化
- redis数据持久化
- Redis数据持久化
- Redis数据持久化
- Redis数据持久化
- redis 数据持久化
- Redis 数据持久化
- Redis 数据持久化
- redis数据持久化
- Redis数据持久化
- redis 数据持久化
- Redis 数据持久化
- redis 数据持久化
- Redis数据持久化
- Redis数据持久化
- pixhawk自学笔记之px4遥控信号部分
- [LeetCode]100. Same Tree
- cocoa pods的问题收集
- oracle 分区,range-list,范围-列表复合分区
- C2C平台的组织架构
- redis的数据持久化
- plymouth启动分析
- PHP统一制表符和空格兼容多人开发
- 根据百度地图两个坐标点获得两点间距离
- 返回给定的n个数的序列中的最大数和最小数
- 开发中碰到的问题:android.os.NetworkOnMainThreadException
- linux mysql 安装 和导入导出
- ActiveX 采用_onexit()或atexit() 导致的 0x3115DF9F 处有未经处理的异常(在 iexplore.exe 中): 0xC0000005: 执行位置 0x3115DF9F
- 对象不支持“attachEvent”属性或方法