持久化

RDB方式:

rdb方式的持久化是通过快照完成的。符合一定条件时redis会自动将内存中的所有数据生成一份副本并存储在硬盘上,这个过程叫快照。以下几种情况会对数据进行快照:
  1 根据配置规则进行自动快照
  2 用户执行save 或 bgsve命令
  3 执行 flushall 命令
  4 执行复制时

根据配置:save 900 1 ,在900秒内有一个及以上的键被更改则进行快照。
  savebgsave :当进行服务重启、手动迁移以及备份时我们要手动执行。
  - save : redis同步地进行快照操作,在快照执行过程中会阻塞所有来自客户端的请求。
  - bgsave:可以在后台异步地进行快照的操作,执行后会立即返回OK表示开始执行快照操作。如果想知道是否执行完成可以使用lastSave命令获取最近一次成功执行快照的时间。异步看下面原理。
  flushAll 命令:redis会清除数据库中所有数据,不管触发快照与否,只要自动快照条件不为空,就会执行一次。

执行复制时:当设置了主从模式时,redis会在复制初始化时进行自动快中啊。

快照原理

使用fork函数复制一份当前进程的副本(子进程)
  父进程继续接受并处理客户端发来的命令,而子进程开始将内存中的数据写入硬盘。
  写完所有数据,会该临时文件替代旧的RDB文件。
PS :redis重启后会读取 RDB 快照文件,将数据载入内存。(执行fork时,操作系统使用写时复制copy-on-write策略,实际上看上去像是生成了一份内存备份保证子进程不受影响,实际内存不会增加。)进行快照时不会修改硬盘的rdb文件,执行完会将旧文件替换成新的。

AOF方式:

使用redis存储非临时数据时

开启:

默认没有开启,开启后每执行一条会更改数据,会写入硬盘的AOF文件。默认文件名是appendonly.aof,可以通过appendfilename参数修改。

AOF实现:

AOF以纯文本的形式记录了redis执行的写命令。达到一定条件,redis会重写AOF文件,节省空间,保留最后的数据。配置: auto-aof-rewrite-percentage 100。
  同步硬盘数据:由于操作系统的缓存机制,数据并没有真正地写入硬盘,而是进入硬盘的缓存。默认情况下,系统30秒会执行一次同步。在这三十秒可能会导致数据丢失,通过参数 appendfsync设置可以每秒执行一次同步操作(默认 everysec,no 表表示不主动同步由操作系统来同步,always表示每次执行写入都会执行同步)。
  redis允许 同时开启 AOF 和 RDB , AOF 方式的持久化可能丢失的数据更少。

主从复制

配置:

一个主库可以拥有多个从库,一个从库只能拥有一个主库,从库一般是只读。从库也可以拥有从库。

  配置方法 :1 从库配置文件加 “slaveof 主库地址 主库端口”,主库无需配置   2  redis命令,从库中:slaveof 主库地址 主库端口。启动 另一个Redis实例,监听 6379 端口:Redis -service --port 6380 --slaveof 127.0.0.1 6379
  redis命令:INFO replication 查看信息。通过从库的配置文件中的slave-read-only 为 no 可以使从库可写。

原理:

从库启动,向主库发送SYNC,主库收到命令,开始保存快照(即RDB持久化的过程),并将此期间收到的命令缓存起来。快照完成,发给从库,从库使用快照和缓存加载数据,完成复制。
(断开后重连,会重新复制初始化。即使数据只更新几条也重新保存快照,这样效率低下。后面提供了 有条件的增量数据传输。)从库同步的时候不会阻塞,serve-stale-data no : 从库备份时不响应请求。

前面是复制初始化,接下来是复制同步过程,主库的热河会导致数据变化的命令都会异步传给从库。此过程会一直持续贯穿整个主从同步过程指导主从关系终止。

从库数据持久化:

为了提高性能,开启从库持久化,禁用主库持久化。当主库崩了,需要手工从从库恢复数据: 1 从库使用 slaveof no one 命令,将从库提升为主库 2 启动崩溃的主库,使用 slave 命令变为从库。

无硬盘复制:

如果主库快照被关闭,则会进行无硬盘复制:直接通过网络发送数据给从库。配置文件:repl-diskless-sync yes

增量复制:

断线重连情况下的优化,Redis会有个ID,根据ID,之前的缓存被放在积压队列中,收到主库的命令时会记录下命令的偏移量,然后根据偏移量对这些进行执行。

集群

只需要将每个数据节点的 Cluster-enabled yes配置选项打开即可。每个集群中至少有3个主库才能正常运行。

节点,槽,槽的重新分配,复制与故障转移

哨兵

功能:1 监控数据库的正常运行 2 主库故障自动提升从库为主库
  使用:(1) 建立sentinel.conf文件,内容为 :sentinel monitor 主数据库名 "ip" "port"  1; (2)接下来启动sentinel进程,将上述配置文件的路径传给哨兵。redis - sentinel  /.../sentinel.conf

  原理:建立两条链接,一条订阅主库的sentinel: hello 频道,另一个定时向主库发送INFO命令。 为每个主库或者从库部署一个哨兵。

转载于:https://www.cnblogs.com/RobertLionLin/p/11415862.html

Redis入门指南(三)相关推荐

  1. 《Redis入门指南(第2版)》一3.2 字符串类型

    本节书摘来异步社区<Redis入门指南(第2版)>一书中的第3章,第3.2节,作者: 李子骅 责编: 杨海玲,更多章节内容可以访问云栖社区"异步社区"公众号查看. 3. ...

  2. Redis入门指南 第1章 简介 Redis的几项特性

    Redis入门指南 第1章 简介 Redis的几项特性 之前在做爬虫相关的demo时接触到了Redis,它基于键值对的存储系统吸引了我.它的操作十分方便,而且性能也高.趁着假期,系统地自学一下Redi ...

  3. Redis入门指南之三(入门)

    本节主要介绍Redis的5种数据类型,同时使用Python API来操作Redis,其中python版本为3.5, redis版本为4.0.2. redis-py 的API的使用可以分类为: (1)连 ...

  4. 《Redis入门指南(第2版)》一第2章 准备

    本节书摘来异步社区<Redis入门指南(第2版)>一书中的第2章,作者: 李子骅 责编: 杨海玲,更多章节内容可以访问云栖社区"异步社区"公众号查看. 第2章 准备 R ...

  5. Redis 入门指南 pdf

    2019独角兽企业重金招聘Python工程师标准>>> Redis入门指南 https://yunpan.cn/cxqL7KVWgrTVb  访问密码 77ea 转载于:https: ...

  6. Redis入门指南(第2版) Redis设计思路学习与总结

    https://www.qcloud.com/community/article/222 宋增宽,腾讯工程师,16年毕业加入腾讯,从事海量服务后台设计与研发工作,现在负责QQ群后台等项目,喜欢研究技术 ...

  7. Redis入门(三)Redis的基本数据类型

    1.String类型 用于在Redis中管理字符串的基本命令:(看了一半) 编号 命令 描述说明 1 SET key value 此命令设置指定键的值. 2 GET key 获取指定键的值. 3 GE ...

  8. Redis入门指南:深入了解这款高性能缓存数据库

    本文将带您了解Redis的基本概念.数据类型.特性以及如何在实际项目中应用Redis.通过阅读本文,您将更好地理解如何利用Redis优化您的应用程序性能. 1. 什么是Redis? 2. Redis的 ...

  9. 一.Redis入门指南总结--认识Redis

    一.Redis简介 Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库,Redis对数据的操作都是原子性的. Redis 与其他 key - value 缓存产品 ...

  10. 《Redis入门指南》第2版 读书笔记

    读第二遍了,感觉和几年前读时的收获不一样了. 送上门来当树洞的 独自承担一切 Redis以简洁为美 Redis通信协议是Redis客户端与Redis之间交流的语言,通信协议规定了命令和返回值的格式. ...

最新文章

  1. 2020未来科学大奖获奖名单揭晓
  2. 一文弄懂SSD目标检测算法
  3. 重温强化学习之强化学习简介
  4. 英文版Ubuntu 安装中文输入法
  5. docker搭建gitlab服务器(Centos7)
  6. 容器编排技术 -- Kubernetes Ingress解析
  7. 使用Maven 创建web3.0项目
  8. shell脚本实例(随堂笔记)
  9. 深信服scsa知识点一
  10. 模糊聚类及matlab实现,模糊聚类分析及matlab程序实现
  11. 标题:我的中医自学历程(2013.8.26 更新网盘,欢迎下载和传播)
  12. 计算机教学研修心得英语,网络研修培训心得体会(精选5篇)
  13. python数据分析与挖掘实战(2)帕累托法则菜品盈利分析与相关性分析
  14. iOS开发---本地通知(UILocalNotification)
  15. FasterReport
  16. Python绘制小红花
  17. vi 常用复制与粘帖技巧
  18. 小白投资理财必看:图解基金买入与卖出规则
  19. 《机器学习实战》学习笔记(三):决策树
  20. MTK Android Driver知识大全

热门文章

  1. 载波为半波三角波的单相三阶SPWM逆变器——谐波分析
  2. 本特利振动变送器990-05-50-02-00
  3. 山东大学软件学院概率论与数理统计(考试)——期末考试回忆版
  4. 矩正式键盘程序c语言,单片机键盘程序(4×4矩阵式)
  5. _beginthread 与 _endthread 函数分析 (ReactOS版)
  6. 现代通信技术之分组交换技术
  7. 排队论模型(五): 有限源排队模型、服务率或到达率依赖状态的排队模型
  8. 市场研究中的数据分析知识整理 (四)-主成分分析和因子分析
  9. 尚学堂马士兵Linux视频教程笔记
  10. IP地址是什么?它怎样分类?它和子网掩码的关系是什么?以太网和令牌环网分别是什么?