持久化的简介
RDB
AOF
RDB与AOF的区别
持久化应用场景
对于持久化这个功能点,其实很简单没有那么复杂
演示环境
centos7.0
redis4.0
redis存放目录:/usr/local/redis
redis.conf存放目录:/usr/local/redis/data
1. 持久化简介
redis的所有数据都是保存在内存中,redis崩掉数据会丢失。redis持久化就是把数据保存在磁盘上。利用永久性存储介质将数据进程保存,在特定的时间将保存的数据进行恢复的工作机制称为持久化。
持久化过程保存的是什么呢?
第一种快照形式,存储数据结果,关注点在数据,也就是下文会讲到的RDB
第二种操作过程,存储操作过程,关注点在数据的操作过程,也就是下文会讲到的AOF
2. RDB
2-1 RDB启动方式 -- save命令
下图是redis.conf的配置信息,在执行完save后会生成一个dump.rdb的文件
现在我们设置一个值,然后save一下,在/usr/local/redis/data下就会有一个dump6379.rdb的一个文件
2-2 RDB使用方式之save
- dbfilename dump6379.rdb :设置RDB文件名,默认值为dump.rdb
- dir:存储rdb或者aof文件的路径
- rdbcompression yes :设置存储时是否压缩数据,默认为yes,采用lzf压缩
- rdbchecksum yes:设置是否进行RDB文件格式校验,该校验过程在写文件和读文件过程均进行
2-3 RDB数据恢复
其实这个数据恢复相对于其他关系型数据库恢复基本就不用操作什么。只需要重新在启动就好了
2-4 RDB -- save指令工作原理
当你执行save时,其他客户端请求redis的指令都会等待,直到save指令执行完成。因为save指令是单线程执行,一旦执行时间过长会直接导致其他用户端无法正常存储数据。所以这个指令我们默认被废弃。会使用下文介绍的bgsave来代替
2-5 RDB -- bgsave指令工作原理
当在redis执行了bgsave后会直接返回一个Background saving started
这个时候我们在看一下日志文件,bgsave命令是针对save阻塞问题做的优化
2-5 RDB -- 配置文件自启动
以下配置是默认配置 save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes
save 【时间】 【key改变数量】
也就是说在300秒有10个key值发生变化了,就会在后台执行bgsave
3. AOF
3-1 AOF概念
AOF文件存储的是执行命令操作过程,恢复数据也是使用操作过程来恢复。
3-2 AOF写数据过程
执行一条redis命令
redis的AOF会把命令刷新缓冲区
然后根据一定的方式同步的到redis.conf配置的.aof文件中
3-3 AOF写数据的三种策略
- always:执行的命令都会存储到AOF文件中,数据零误差,性能较低,不建议使用
- everysec:每秒将缓冲区中的指令同步到AOF文件中,数据准确性较高,性能较高,建议使用,也是默认配置。但是在系统突然宕机的情况下回丢失1秒内的数据
- no:由操作系统控制每次同步到AOF文件的周期,整体过程不可控
3-4 AOF功能开启
- 配置:
appendonly yes|no
- 作用:是否开启AOF持久化功能,默认为不开启状态
- 配置:
appendfsync always| everysec | no
- 作用:AOF写数据策略
- 配置:appenfilename filename
- 作用:AOF持久化文件名,默认名为appendonly.aof
然后使用重启redis服务,就可以在usr/local/redis/data目录下可以看到appendonly.aof文件了
然后我们在redis客户端执行一条命令,在来查看一下。可以看到数据都会存入appendonly.aof这个文件中。
3-5 AOF写数据出现的问题
我们先看一个案例,我们重复设置了name这个key后,打开appendonly.aof文件查看,可以看到有三个操作,但是这三个操作我们都是修改的一个key啊!我们只保存最后一个key不行吗?带着这个疑问,我们在继续往下看
3-6 AOF重写
如在上边我们执行了三次 set name 指令,但是我们最终就只需要最后一次执行的记录。也就是我们只需要最后一次执行记录即可。其他的记录就不需要了,然后会把压缩后的数据重写到aof文件中。
重写后我们的磁盘利用率就提高了
还有就是我们恢复数据的速度也会变快
同时也会提高持久化的效率
3-7 AOF重写规则
- 进程内已超时的数据不再写入文件
- 忽略删除指令,如del,
hdel,srem
。 还有就是3-5说的问题,连续对一个key进行操作 - 对同一数据的多条写入记录合并为一条记录:如
lpush list a lpush lsit b lpush list c
可以转化为lpush list a b c
。
3-8 AOF手动重写
指令:bgrewriteaof
接着我们3-5的问题,我们在命令行执行bgrewriteaof指令然后查看appendonly.aof文件
当执行完后会发现文件变小了,文件里也就只有一条指令了
3-9 AOF手动重写工作原理
3-10 AOF自动重写
配置:auto-aof-rewrite-percentage 100 | auto-aof-rewrite-min-size 64mb
触发对比参数:aof_current_size | aof_base_size
当aof_current_size > auto-aof-rewrite-min-size 64mb 会启动重写
此图来源于网络
3-11 AOF工作流程和重写流=流程
4. 总结
以上就是redis持久化的所有内容。
以上是Redis持久化完整版本的详细内容。更多信息请关注PHP中文网其他相关文章!

Redis是现在最热门的key-value数据库,Redis的最大特点是key-value存储所带来的简单和高性能;相较于MongoDB和Redis,晚一年发布的ES可能知名度要低一些,ES的特点是搜索,ES是围绕搜索设计的。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于redis的一些优势和特点,Redis 是一个开源的使用ANSI C语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式存储数据库,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis Cluster集群收缩主从节点的相关问题,包括了Cluster集群收缩概念、将6390主节点从集群中收缩、验证数据迁移过程是否导致数据异常等,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis实现排行榜及相同积分按时间排序,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于原子操作中命令原子性的相关问题,包括了处理并发的方案、编程模型、多IO线程以及单命令的相关内容,下面一起看一下,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了bitmap问题,Redis 为我们提供了位图这一数据结构,位图数据结构其实并不是一个全新的玩意,我们可以简单的认为就是个数组,只是里面的内容只能为0或1而已,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis实现排行榜及相同积分按时间排序,本文通过实例代码给大家介绍的非常详细,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于实现秒杀的相关内容,包括了秒杀逻辑、存在的链接超时、超卖和库存遗留的问题,下面一起来看一下,希望对大家有帮助。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

Dreamweaver Mac版
视觉化网页开发工具