11/6补充笔记

修改redis-6379.conf里面的save10秒2个数据发生改变 (save 10 2)

修改一次数据不发生改变,修改2次数据才发生改变

继续修改数据,发现还是一样的规律

增删该都发生变化,除了查以外。

save配置原理

返回结果,要对数据产生影响,数据发生了变化,或者变量达到设置要求,rdb才会发生变化。save配置要根据真实场景进行设置,否则性能可能出现问题,save配置后执行的是bgsave操作。

RDB2种启动方式对比

save指令在读写的过程中是同步的,而不敢save是异步的,save指令会阻塞客服端,bgsave读写的过程是异步的,会创建子线程(相当于启动了新进程),不会造成客服端堵塞,但会造成额外消耗内存。

rdb特殊启动指令

服务器运行过程中重启

debug reload

关闭服务器是指定保存数据

shutdown save(不管是够开启,自动执行bgsave)

RDB优点与缺点

优点:

RDB是一个紧凑压缩的二进制文件,代表Redis在某个时间点上的数据快照。非常适用于备份,全量复制等场景。比如每2小时执行bgsave备份, 并把RDB文件拷贝到远程机器或者文件系统中(如hdfs),用于灾难恢复。RDB恢复数据远远快于AOF的方式。

缺点:

RDB方式数据没办法做到实时持久化/秒级持久化,可能保存的数据不是很完整。因为bgsave每次运行都要执行fork操作创建子进程,会额外消耗性能,频繁执行成本过高。RDB文件使用特定二进制格式保存,Redis版本更新过程中有多个格式的RDB版本,存在老版本Redis服务数据格式无法兼容新版RDB格式的问题。

AOF

使用AOF的原因:针对RDB不适合实时持久化的问题,Redis提供了AOF持久化方式来解决。

概念

AOF(append only file)持久化:以日志的方式记录数据产生的过程(每次写入时命令), 重启时再重新执行AOF文件中的命令达到恢复数据的目的。AOF的主要作用是解决了数据持久化的实时性,目前已经是Redis持久化的主流方式

AOF写数据三种策略(appendfsync)

always(每次),每次把写入操作同步到AOF文件中,数据完整,性能较低.

everysec(每秒),每秒将缓冲区同步到AOF文件中,数据准确性和性能较高,一般都是使用这个指令,也是默认配置

no(系统控制),由操作系统控制每次同步到AOF中,整体不可控

实操:

配置:appendfilename配置为appendonly.aof,如果是多端口号的话,建议配置为appendonly-端口号.aof

1.进入conf目录配置redis-6379的conf文件

2.添加以下命令,开启持久化功能(appendonly yes|no),配置写数据策略(appendfsync always |everysec|no)

3.先杀死原来的服务进程,再重新用配置文件启动

4.进入data,查看文档是否多了一个aof的文件

5.添加数据发现文件变大了

6.在使用everysec指令,重启服务端,在修改数据之前查看文件大小

7.在写入数据之后,查看文件大小,和cat 文件.aof日志,发现修改数据日志成功

AOF重写

随着AOF文件越来越大,需要定期对AOF文件进行重写,达到压缩的目的。

就是将对同一个数据的若干个条命令执行结果转化成最终结果数据对应的指令进行记录。

目的:AOF重写节省了文件占用空间,提高数据恢复效率,更小的AOF 文件可以更快地被Redis加载.

AOF重写方式:手动和自动

手动:bgrewriteaof(后台重新写入aof)

自动: auto-aof-rewrite-min-size size

    `auto-aof-rewrite-percentage` *percentage*

修改配置文件

启动客服端修改数据

查看文件和查看aof文档数据

修改之后,启动bgrewriteaof会出现以下提示

再次查看文件大小明显变小了

当我查看aof数据过程的时候是乱码,反正文件是被压缩了.

AOF手动重写 :bgrewriteaof指令工作原理

与bgsave指令相似,首先也是发送指令(控制台会反馈Background append only file rewriting started),调用fork函数生成子进程,重写.aof文件,返回消息.

AOF自动重写

自动重写触发条件设置 auto-aof-rewrite-min-size size自动重写最小体积,默认为64MB。

auto-aof-rewrite-percentage percent代表当前AOF文件空间 和上一次重写后AOF文件空间的比值。

aof_current_size AOF文件空间 aof_base_size上一次重写后AOF文件空间

自动重写触发时机

aof_current_size>auto-aof-rewrite-min-size &&(aof_current_size-aof_base_size)/aof_base_size>=auto-aof-rewrite-percentage

在客服端输入info,可以看到 Persistence(持久化),关于持久化的东西,

AOF重写流程

RDB与AOF区别

RDB产生的文件紧凑压缩比更高,占用储存空间小,因此读取RDB恢复速度更快。由于每次生成RDB开销较大,储存速度很慢,可能会丢失数据,RDB在消耗资源是重量级的,相对于AOF启动优先级很低。

AOF通过追加写命令到文件实现持久化,通过appendfsync参数可以控制实时/秒级持久化。因为需要不断追加写命令,所以AOF文件体积逐渐变大,需要定期执行重写操作来降低文件体积。由于体积很大,所以占用的储存空间很大,与RDB相比,是相反的,占用的储存空间很大,存储速度很快,恢复的速度比较慢,因为是记录的数据的储存过程,经过重写之后会变小,AOF在消耗资源方面是轻量级的,在不同的场景更改策略可以提高数据的安全性。

RDB与AOF的选者

对数据的过程很敏感,而且不要求恢复速度的话,建议使用AOF,

对数据要求完整性,建议使用RDB持久化方案,切恢复速度很快。

如果能承受数分钟以内的数据丢失,且追求恢复速度,选用RDB

如不能承受数分钟以内的数据丢失,对业务数据非常敏感,选用AOF

或者两者同时启用,优先使用AOF恢复数据,降低数据丢失的量。

持久化应用场景

应用于抢购,限购类、限量发放优惠卷、激活码等业务的数据存储设计,应用于具有操作先后顺序的数据控制,应用于最新消息展示,应用于控制黑名单设定的服务控制,应用于计数器组合排序功能对应的排名。

11/6笔记 补充(Redis持久化,RDB&&AOF)的更多相关文章

  1. Redis持久化rdb&aof

    Redis持久化rdb&aof 前言 持久化:即把数据存储于断电后不会丢失的设备中,通常是硬盘 常见的持久化方式: 主从:通过从服务器保持持久化,如mongoDB的replication se ...

  2. [动图演示]Redis 持久化 RDB/AOF 详解与实践

    Redis 是一个开源( BSD 许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件.它支持的数据类型很丰富,如字符串.链表.集 合.以及散列等,并且还支持多种排序功能. 什么叫持 ...

  3. [动图演示]Redis 持久化 RDB/AOF 详解与实践【华为云技术分享】

    Redis 是一个开源( BSD 许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件.它支持的数据类型很丰富,如字符串.链表.集 合.以及散列等,并且还支持多种排序功能. 什么叫持 ...

  4. redis++:Redis持久化 rdb & aof 工作原理及流程图 (三)

    RDB的原理: 在Redis中RDB持久化的触发分为两种:自己手动触发与Redis定时触发. 针对RDB方式的持久化,手动触发可以使用: 1):save:会阻塞当前Redis服务器,直到持久化完成,线 ...

  5. Redis持久化--RDB+AOF(转)

    1.Redis两种持久化方式 RDB 执行机制:快照,直接将databases中的key-value的二进制形式存储在了rdb文件中 优点:性能较高(因为是快照,且执行频率比aof低,而且rdb文件中 ...

  6. 第十章 Redis持久化--RDB+AOF

    注:本文主要参考自<Redis设计与实现> 1.Redis两种持久化方式 RDB 执行机制:快照,直接将databases中的key-value的二进制形式存储在了rdb文件中 优点:性能 ...

  7. 春招必问的redis持久化(RDB AOF),你能答上来么?

    春招面试模拟,如同雷同,纯属巧合!!! 面试的大体流程: 第一步:一般会有笔试题,也可能没有.有笔试题就要好好答了,因为会重视笔试结果,为了节约面试官时间,HR可能先会看,不合格直接让你走人了. 第二 ...

  8. Redis学习笔记六:持久化实验(AOF,RDB)

    作者:Grey 原文地址:Redis学习笔记六:持久化实验(AOF,RDB) Redis几种持久化方案介绍和对比 AOF方式:https://blog.csdn.net/ctwctw/article/ ...

  9. Linux 安装redis 基本配置 发布订阅,安全配置,持久化 rdb ,aof

    redis redis相关配置1.yum  源码 rpm  yum 快速,间接,高效,解决依赖关系,(自动安装到某个路径,不可控),通过yum安装的软件查询命令 rpm -ql nginx  yum源 ...

  10. redis的持久化(RDB&AOF的区别)

    RDB 是什么? 在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里. Redis会单独创建(fork)一个子进程来进行持久化,会 ...

随机推荐

  1. Java知识系统回顾整理01基础01第一个程序03Eclipse下载安装

    Eclipse是最流行的java 集成开发环境IDE(Integrated Development Environment) 下载安装Eclipse两种方式 一.方式1:Eclipse官网下载安装 链 ...

  2. 【漏洞复现】WinRAR目录穿越漏洞(CVE-2018-20250)复现

    前言 这漏洞出来几天了,之前没怎么关注,但是这两天发现开始有利用这个漏洞进行挖矿和病毒传播了,于是想动手复现一波. WinRAR 代码执行相关的CVE 编号如下: CVE-2018-20250,CVE ...

  3. Open CV leaning

    刚接触Open CV 几个比较好的介绍: OpenCV学习笔记:https://blog.csdn.net/yang_xian521/column/info/opencv-manual/3 OpenC ...

  4. 《C++ primer plus》第3章练习题

    注:有的题设条件自己改动了一下,比如英寸英尺改成米和厘米,部分题目自己加了点额外要求. 1.要求用户输入身高(m),用下划线提示用户输入,将身高转化成"米"加"厘米&qu ...

  5. JavaScript按钮排他思想

    要求: 有一系列按钮,要求每单击其中一个,该按钮改变样式(以背景颜色为例),其他按钮恢复保持默认样式. 实现思路: 获取所有按钮元素 首先先把其他按钮的背景颜色去掉 再单独设置自己的样式 代码实现: ...

  6. 详解Class加载过程

    1.Class文件内容格式 2.一个class文件是被加载到内存的过程是怎样的? loading 把一个class文件装到内存里,class文件是一个二进制,一个个的字节 linking Verifi ...

  7. RHSA-2018:1700-重要: procps-ng 安全更新(存在EXP、本地提权)

    [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 修复命令: 使用root账号登陆She ...

  8. mongoose 查询数据属性为数组,且包含某个值的方法

    mongoose在创建schema的时候有些属性需要设置为数组类型,比如商品图片.商品标签.不同尺寸.价格等. 那么怎么查询具有某个标签的商品了,下面记录一下两种情况: 查询具有'vue'标签的文章 ...

  9. 2014年 实验二 B2C网上购物

    实验二 B2C网上购物 [实验目的] ⑴.熟悉虚拟银行和网上支付的应用 ⑵.熟悉并掌握消费者B2C网上购物和商家的销售处理 [实验条件] ⑴.个人计算机一台 ⑵.计算机通过局域网形式接入互联网 (3) ...

  10. RLP序列化算法

    RLP RLP(Recursive Length Prefix)递归长度前缀编码,是由以太坊提出的序列化/反序列化标准,相比json格式体积更小,相比protobuf对多语言的支持更强. RLP将数据 ...