一、Redis数据备份与恢复
Redis里的数据都是保存在内存中,关闭服务器必须进行数据备份。
1、Redis的数据持久化
bgsave做镜像全量持久化,AOF做增量持久化。
bgsave的原理:fork和cow(copy on write)fork是redis通过创建子进程来进行bgsave操作,子进程创建后,父子进程共享数据段,父进程继续提供读写服务,并不会阻塞,写脏的页面数据会逐渐和子进程分离开。
bgsave是fork出一个子进程,子进程负责调用RDBsave,并在保存完成之后向主进程发送信号,通知保存已经完成。因为RDBsave在子进程被调用,所以Redis服务器在BGsave执行期间仍然可以处理客户端的请求,一般常用bgsave进行线上数据处理。
save:是直接调用RDBsave,阻塞掉redis主进程,直到保存完成为止。在主进程阻塞的期间,服务器不能处理客户端的任何请求。
bgsave的缺点:因为bgsave会耗费较长时间,不够实时,服务器假如停机的时候会导致大量丢失数据,所以需要AOF来配合使用。在redis实例重启的时候,会使用bgsave持久化文件重新构建内存,在使用AOF重放近期的操作指令来实现完整恢复重启之前的状态。AOF日志功能有SYNC属性的配置,如果不要求性能的话,可以在每写指令时都SYNC一下磁盘,就不会丢失数据。但是在高性能的要求下,每次都SYNC肯定不现实。一般都是定时使用SYNC,配置SYNC时间。
,2、Redis的同步机制
Redis可以使用主从同步,从从同步,第一次同步,主节点做一次bgsave,并同时将后续修改操作记录在内存buffer,等到将RDB文件全量同步到复制节点,复制节点接受完成后将RDB镜像加载到内存。加载完成后,在通知主节点将期间修改的操作记录同步到复制节点,就进行重放,这就是同步过程。
3、Redis的集群原理
Redis有两种集群方式
Redis Sentinal:高可用,在master宕机时会自动将slave提升为master,继续提供服务。
Redis Cluster:着眼于扩展性,单个Redis内存不足的时候,使用Cluster进行分片存储。
4、Redis的性能常见问题
1、master不要做任何持久化工作,比如RDB内存快照,AOF日志文件,不然降低效率
2、如果数据重要,slave开启了AOF备份数据,配置SYNC的时间设置为一秒同步写入磁盘一次。
3、为了主从复制的速度和连接稳定性,master和slave放在同一个局域网内
5、假如说Oracle数据库里有5000w条数据,redis只存20w条数据,怎么保证redis中的数据都是热点数据
redis内存数据集大小上升到一定大小的时候,就会实施数据淘汰策略
redis的数据淘汰策略有:
volatile-LRU:在已设置过期时间的数据集(server.db[i].expries)中选最近最少使用的数据淘汰。
volatile-TTL:在已设置过期时间的数据集中挑选将要过期的数据淘汰。
volatile-Random:在已设置过期时间的数据集中任意选择数据淘汰
allkeys-LRU:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
allkeys-Random:从数据集(server.db[i].dict)中任意选择数据淘汰
no-enviction(驱逐):禁止驱逐数据。
一、Redis数据备份与恢复的更多相关文章
- Redis 数据备份与恢复,安全,性能测试,客户端连接,管道技术,分区(四)
		Redis 数据备份与恢复 Redis SAVE 命令用于创建当前数据库的备份. 语法 redis Save 命令基本语法如下: redis 127.0.0.1:6379> SAVE 实例 re ... 
- redis开启持久化、redis 数据备份与恢复
		redis持久化介绍 https://segmentfault.com/a/1190000015897415 1. 开启aof持久化.以守护进程启动.远程访问先把配置文件拷贝一份到/etc/redi ... 
- Redis 数据备份与恢复
		Redis SAVE 命令用于创建当前数据库的备份. 语法 redis Save 命令基本语法如下: redis 127.0.0.1:6379> SAVE 实例 redis 127.0.0.1: ... 
- redis数据备份与恢复
		1.启动redis 进入redis目录 redis-cli 2.数据备份 redis 127.0.0.1:6379> SAVE 该命令将在 redis 备份目录中创建dump.rdb文件. 3. ... 
- 8.Redis 数据备份与恢复
		转自:http://www.runoob.com/redis/redis-tutorial.html Redis SAVE 命令用于创建当前数据库的备份. 语法 redis Save 命令基本语法如下 ... 
- Redis—数据备份与恢复
		https://www.cnblogs.com/shizhengwen/p/9283973.html https://blog.csdn.net/w2393040183/article/details ... 
- Redis之数据备份与恢复
		Redis 数据备份与恢复 Redis SAVE 命令用于创建当前数据库的备份. 语法 redis Save 命令基本语法如下: redis 127.0.0.1:6379> SAVE 实例 re ... 
- Redis数据备份、安全、管理服务器笔记
		Redis 数据备份与恢复 Redis SAVE 命令用于创建当前数据库的备份. 实例 redis > SAVE OK 恢复数据 如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 ... 
- 数据备份与恢复  半持久化 全持久化 fork aof rdb  Backing up Disaster recovery  备份 容灾
		Redis数据备份与恢复 - 流年晕开时光 - 博客园 https://www.cnblogs.com/deny/p/11531355.html Redis数据备份与恢复 Redis所有数据都是保存在 ... 
随机推荐
- Go 结构体(Struct)
			引用曾经看到的一篇文章里面对 Golang 中结构体的描述,如果说 Golang 的基础类型是原子,那么 结构体就是分子.我们都知道分子是由原子组成的,换言之就是结构体里面可以包含基础类型.切片. 字 ... 
- Mac系统配置JDK环境变量
			1.安装 因为并非所有用户都用得着 Java ,所以在默认状态下 OS X 不预装 Java , 如果你需要的话可以手动安装. 到 Oracle 下载最新版的 Java 8 JDK 安装,安装目录可通 ... 
- Jquery中的DOM操作:
			DOM是 Document Object Model的缩写,是一种与浏览器,平台,语言无关的接口,使用该接口可以访问页面中所有的标准组件,下面介绍一下常用的一些DOM操作: 选择节点: 将在下篇博客中 ... 
- Cannot find a valid baseurl for repo: base/7/x86_6 解决方法
			安装centos7后发现不能上网, sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33 将ONBOOT=no改为ONBOOT=yes 然后重启网络服务 ... 
- Oracle(字符函数)
			单行函数语法: 语法:funcation_name(列 | 表达式[, 参数1, 参数2]) 单行函数主要分为以下几种: 字符函数:接收数据返回具体的字符信息 数值函数:对数字进行处理,例如:四舍五入 ... 
- 学习笔记8—MATLAB中奇异值处理办法
			一.Inf 和 NAN处理 lnf: 无穷大值,可以用islnf或者isfinite函数处理 NAN:不是一个数字,可以用isnan函数来处理 或者: 类似于这种处理 mn(find(mn<= ... 
- Lambda语法篇
			函数式接口 函数式接口(functional interface 也叫功能性接口,其实是同一个东西).简单来说,函数式接口是只包含一个方法的接口. Lambda语法 包含三个部分 一个括号内用逗号分隔 ... 
- C++ 实现sqilte创建数据库插入、更新、查询、删除
			C/C++ Interface APIs Following are important C/C++ SQLite interface routines, which can suffice your ... 
- JAVA基础知识总结:二十二
			一.反射机制 1.概念 反射机制指的是程序在运行的过程中,对于任意一个类,都能够知道这个类对应的所有的属性和方法:对于任意一个对象,都能够调用其中的任意的方法和属性,在Java中,把这种动态获取信息以 ... 
- Hive json字符串解析
			在做数据测试时,会遇到数据库表里字段类型为json 的情况,而我们可能只关注该字段中的各别内容的信息,如下 content {"测试内容1":,"测试内容2": ... 
