前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis学习11:持久化RDB/AOF

Redis学习11:持久化RDB/AOF

作者头像
程序员洲洲
发布2024-06-07 08:32:16
720
发布2024-06-07 08:32:16
举报
文章被收录于专栏:项目文章

持久化简介

  • 什么是持久化?
  • 利用永久性的存储介质进行保存,特定的时间将保存的数据进行恢复。
  • 持久化方式:保存分为快照和日志。注意日志保存的是整个操作的过程。
  • 在Redis中两种都有,左边叫做RDB,右边叫做AOF。

RDB 快照

  • RDB启动方式
  • 一定要有三个因素:任务时间地点
  • 对应命令:sava
  • 每执行一次就可以手动保存一次数据
  • 先通过 key * 查看有没有数据
  • 有没有数据 没有就添加
  • 然后save命令
  • 然后进入到data目录下会发现 dump.rdb 一个文件
  • 打开rdb文件发现乱码,是因为rdb是二进制文件所以查看不出来
  • 把rdb删掉,然后再执行一次save,然后查看会发现又有了rdb文件。
  • 每保存一次,会 生成一个rdb文件生成当前的快照信息。

RDBsava指令的相关配置

  • 进入data目录中,查看dump.rdb文件。
  • 然后可以通过更改配置文件来修改save的相关命令
  • 进入到目录中,cat conf文件,进行更改配置
  • 然后重新开启一下这个进程,先kill -s 这个进程
  • 然后redis-server conf/redis-6379.conf 启动redis就可以生效了
  • 然后就可以通过save命令后直接去data目录下查看有没有这个文件
  • 先杀掉这个进程,然后再次启动这个服务,看是否恢复了数据 。
  • 通过命令:redis-server conf/redis-6379.conf 启动
  • 可以通过:ps -ef | grep redis- 来查看有哪些进程
  • 通过客户端连接 然后keys * 查看到原来的数据恢复了
  • 原理是在启动的时候把数据加载了进行恢复

save的工作原理

  • 要注意redis是单线程执行。
  • 注意save的指令可能会阻塞redis服务器,线上环境不建议使用,因为会把性能损耗很多。
  • 所以需要慎重需要使用RDB线上的使用。
  • 总结:当数据量过大,rdb单线程执行方式造成的效率过低,性能过低。
  • 解决方案:rdb后台执行。
  • bgsave 就是命令了。
  • 手动启动后,后台将保存这个操作,但不是立即就执行了。
  • 执行ll查看rdb的大小与时间。
  • 工作原理:
  • 那么如何验证这个工作过程呢?
  • 可以进行查看日志文件,来查看是否是这样的。
  • cat 6379.log
  • 可以查看到日志也是这么显示的。

bgsave与save总结

  • bgsave命令是针对save阻塞问题做的优化,redis内部涉及到的rdb操作都将采用bgsave的方式,save命令可以放弃使用的。

自动执行save rdb启动方式

  • 意思就是说,10s内有99个key了,那么就需要进行持久化。其实就是单位时间内达标了就进行bgsave存。
  • 配置的方式和案例如下:

rdb三种启动方式对比

  • bgsave起了一个新进程所以需要额外的内存消耗的。

第二种持久化方案 AOF

RDB存储的弊端:

  • 最后一个指的是无法时刻进行RDB,可能会有一些丢失。

AOF介绍

AOF写数据的过程

  • 那么问题变成了如何控制命令同步到.aof文件中。
  • 一共有三种策略:
  • 每次、每秒、系统控制

AOF功能开启

  • 进入到conf目录下,然后更改conf文件就可以了。
  • 配置过程如下:
  • 然后到客户端写一个set name 123,会发现.aof文件已经开始变化了。
  • 也就是说always是可以每次都记住变化的。
  • 但是记住如果是get,.aof的大小是不会变化的,因为没有进行更改数据。
  • 然后可以查看这个文件。
  • 如果改成 everysec的话是看不出来每次一存的区别的。因为每秒一存太快了。

AOF重写概念与命令执行

  • bg就是后台的意思,background。
  • 当执行重写之后,再次查看ll。然后发现变小了。
  • 发现只剩下了345。
  • 类似消消乐,多个操作合并一个了。

自动AOF重写

  • 一共有两种,一个是大小,一个是百分比。
  • 这个两个触发条件触发一个就会触发AOF了。
  • 在客户端输入info就可以看到上面说的系统数据值了。

AOF的工作流程

RDB与AOF的区别

  • RDB类似整盘复制。
  • 比如说游戏的回档,玩家是可以接受的。所以可以用RDB,用来做阶段性的恢复。
  • 如果用了RDB,那么存储的时间要慎重考虑。

持久化的应用场景

  • 第一个主键id不适合用持久化,适合临时化。
  • 第二个热度数据也不适用。
  • 第三个不适用。因为数据库也有。
  • 第四个快速存储、快速消失的适合存起来。其次恢复这个就不用后台做大规模的重做。如果差一两个,那么激活码就多发一两个也没事。
  • 第五个操作先后顺序的话也适用redis存储。
  • 任务队列、消息队列也可以,但是用MQ更适合。
  • 第七个关联搜索不适用。
  • 黑白名单的控制:如果黑名单做的是长期策略,那么数据库肯定要存,就不需要redis了。而如果是短期策略,那么就不适合。(因为网吧或者校园网的ip进行黑名单了,那么如果直接封了网吧和校园网会导致其他的用户ip访问不了了。)
  • 排名功能适合做持久化,这种数据是不会存数据库的。
  • 最后一个应用按次结算,那么要不要持久化,可以这么想:如果不存,会不会出灾难性的结果,如果会出现,那么需要,如果不会出现,那么就不用管。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 持久化简介
  • RDB 快照
  • RDBsava指令的相关配置
  • save的工作原理
  • bgsave与save总结
  • 自动执行save rdb启动方式
  • rdb三种启动方式对比
  • 第二种持久化方案 AOF
    • RDB存储的弊端:
      • AOF介绍
        • AOF写数据的过程
          • AOF功能开启
            • AOF重写概念与命令执行
              • 自动AOF重写
                • AOF的工作流程
                • RDB与AOF的区别
                • 持久化的应用场景
                相关产品与服务
                对象存储
                对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档