Redis持久化完整版本

持久化的简介

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的文件

Redis持久化完整版本

现在我们设置一个值,然后save一下,在/usr/local/redis/data下就会有一个dump6379.rdb的一个文件

Redis持久化完整版本

2-2 RDB使用方式之save

dbfilename dump6379.rdb :设置RDB文件名,默认值为dump.rdbdir:存储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持久化完整版本

当在redis执行了bgsave后会直接返回一个Background saving started

这个时候我们在看一下日志文件,bgsave命令是针对save阻塞问题做的优化

Redis持久化完整版本

2-5 RDB — 配置文件自启动

以下配置是默认配置save 900 1save 300 10save 60 10000stop-writes-on-bgsave-error yes

登录后复制

Redis持久化完整版本

save  【时间】 【key改变数量】

也就是说在300秒有10个key值发生变化了,就会在后台执行bgsave

3. AOF

3-1 AOF概念

AOF文件存储的是执行命令操作过程,恢复数据也是使用操作过程来恢复。

3-2 AOF写数据过程

Redis持久化完整版本

执行一条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持久化完整版本

然后使用重启redis服务,就可以在usr/local/redis/data目录下可以看到appendonly.aof文件了

Redis持久化完整版本

然后我们在redis客户端执行一条命令,在来查看一下。可以看到数据都会存入appendonly.aof这个文件中。

Redis持久化完整版本

3-5 AOF写数据出现的问题

我们先看一个案例,我们重复设置了name这个key后,打开appendonly.aof文件查看,可以看到有三个操作,但是这三个操作我们都是修改的一个key啊!我们只保存最后一个key不行吗?带着这个疑问,我们在继续往下看

Redis持久化完整版本

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文件

当执行完后会发现文件变小了,文件里也就只有一条指令了

Redis持久化完整版本

3-9 AOF手动重写工作原理

Redis持久化完整版本

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  会启动重写

此图来源于网络

Redis持久化完整版本

3-11 AOF工作流程和重写流=流程

Redis持久化完整版本

Redis持久化完整版本

4. 总结

以上就是redis持久化的所有内容。

以上就是Redis持久化完整版本的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2043268.html

(0)
上一篇 2025年2月24日 00:53:09
下一篇 2025年2月24日 00:53:51

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Dubbo 配置中端口、注册中心和属性的常见问题解答

    理解 Dubbo 配置中的端口、注册中心和属性 本文旨在解答以下关于 Dubbo 配置文件中常见元素的疑问: 1. registry 中的 protocol 和外部的 protocol 的区别 Dubbo 配置文件中的 registry 标…

    2025年3月14日
    200
  • swoole自学入门教程

    Swoole是一种PHP Web服务器和应用程序框架,具有高性能和协程化特质。通过本教程,你可以了解到如何在PHP中安装和使用Swoole,包括创建HTTP服务器、使用协程和实现WebSocket通信。此外,Swoole还提供了数据库连接池…

    2025年3月13日
    200
  • workerman手册

    Workerman是一个异步事件驱动框架,用于开发高性能网络应用。其特点包括高性能、低内存消耗、易于使用和可扩展。它广泛应用于即时通讯、WebSocket服务、高并发HTTP服务等场景。使用时可创建Worker类,并调用run()函数运行W…

    2025年3月13日
    200
  • laravel8 的优化点

    Laravel 8 针对性能优化提供了以下选项:缓存配置:使用 Redis 缓存驱动、缓存门面、缓存视图和页面片段。数据库优化:建立索引、使用查询范围、使用 Eloquent 关系。JavaScript 和 CSS 优化:使用版本控制、合并…

    2025年3月13日
    200
  • 如何高效持久化多个客户端连续上传的坐标轨迹数据?

    应对海量坐标轨迹数据持久化挑战 本文探讨如何高效持久化多个客户端连续上传的坐标轨迹数据,并提供两种方案以应对不同场景的需求。 方案一:字符串拼接法(适用于轨迹较短的场景) 此方案将每秒接收到的坐标数据拼接成一个字符串,然后存储到数据库。 然…

    2025年3月13日
    200
  • Linux平台Swagger性能如何优化

    提升Linux平台Swagger性能,需要多方面策略协同。本文将介绍几种常见的优化方法: 一、硬件资源升级 内存扩容: 更大的内存直接提升Swagger响应速度。CPU升级: 更强大的CPU能更快处理请求。SSD硬盘: SSD的I/O性能远…

    2025年3月13日
    200
  • Linux上Swagger工具使用有哪些技巧

    本文介绍在Linux系统下提升Swagger工具使用效率和安全性的实用技巧。 保持Swagger版本更新: 使用最新稳定版Swagger,例如Springfox的最新版本,以确保最佳性能和安全性。 增强安全性:密码保护与身份验证: 为Swa…

    2025年3月13日
    200
  • yii2项目中如何使用redis

    想要在Yii2这个PHP框架中很好的使用redis键值存储,那么首先就要推荐yii2-redis这个官方的Github库。这个库能够很好的帮助我们在Yii2框架中使用redis,它提供缓存,Session以及ActiveRecord模式的支…

    2025年3月13日
    200
  • 详解laravel中redis的配置和使用

    下面由laravel框架教程栏目给大家详解laravel中redis的配置和使用,希望对需要的朋友有所帮助!laravel中redis 的配置和使用 引入redis composer require predis/predis 会在comp…

    2025年3月13日
    200
  • laravel+redis有哪些用法

    laravel+redis有用法有:1、使用Redis作为缓存驱动器;2、使用Laravel提供的缓存操作方法来操作Redis缓存;3、使用Redis作为数据存储系统,Laravel提供了与Redis交互的方法,使我们能够方便地进行数据存储…

    2025年3月13日
    200

发表回复

登录后才能评论