首页 技术 正文
技术 2022年11月6日
0 收藏 712 点赞 246 浏览 1269 个字

Redis实现快照的过程

  1. redis调用fork,现在有了子进程和父进程
  2. 父进程继续处理client请求,子进程负责将内存内容写入到临时文. 由于os的写时复制机制(copyonwrite)父子进程会共享相同的物理页面, 当父进程处理写请求时os会为父进程要修改的页面创建副本, 而不是写共享的页面, 所以子进程的地址空间内的数据是fork时刻整个数据库的一个快照(是不是类似于python中使用os模块创建子进程???)
  3. 当子进程将快照写入临时文件完毕后,用临时文件替换原来的快照文件, 然后子进程退出

注:

  • client也可以使用save或者bgsave命令通知redis做一次快照持久化。save操作是在主线程中保存快照的,由于redis是用一个主线程来处理所有client的请求,这种方式会阻塞所有client请求, 所以不推荐使用.
  • 另一点需要注意的是,每次快照持久化都是将内存数据完整写入到磁盘一次,并不是增量的只同步脏数据。如果数据量大的话,而且写操作比较多,必然会引起大量的磁盘io操作,可能会严重影响性能。
  • 另外由于快照方式是在一定间隔时间做一次的,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改。如果应用要求不能丢失任何修改的话,可以采用aof持久化方式

数据备份

使用SAVE命令保存数据或使用BGSAVE在后台保存

127.0.0.1:6379> SAVE
OK
127.0.0.1:6379>

该命令将在redis目录中创建dump.rdb文件

数据恢复

将备份文件(dump.rdb)移动到redis安装目录并启动服务

获取redis目录使用如下命令

127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "/home/ql"
127.0.0.1:6379>

持久化: 把数据存储于断电后不会丢失的设备中, 通常是硬盘

常见持久化方式:

主从: 通过从服务器保存和持久化, 如mongoDB的replication sets配置

日志: 操作生成相关日志, 并通过日志来恢复数据

rdb工作原理:

每隔N分钟或N次写(新增或改变)操作后, 从内存dump数据形成rdb文件, 压缩, 放在备份目录

: 红色部分可以通过参数来配置

rdb快照相关参数

save 900 1    #刷新快照到硬盘中, 必须满足两者要求才会触发, 及900秒内至少1个关键字发生变化
save 300 10 #必须是300秒内至少10个关键字发生变化
save 60 10000 #必须是60秒内至少10000个关键字发生变化
#以上三个选项都屏蔽, 则rdb被禁用stop-writes-on-bgsave-error yes #后台存储错误停止写
rdbcompression yes #使用LZF压缩rdb文件
rdbchecksum yes #存储和加载rdb文件时校验
dbfilename dump.rdb #设置rdb文件名
dir ./ #设置工作目录, rdb文件会写入该目录

rdb缺陷

在两个保存点之间突然断电, 则会丢失两个保存点之间的数据

出于对持久化的更精细要求, redis增添了 aof方式 (append only file)

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,489
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,904
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,737
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,490
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,128
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,291