当前位置: 首页 > news >正文

(分布式缓存)Redis持久化

对应的视频教程

高级篇Day3-01-Redis持久化_哔哩哔哩_bilibili

一、RDB持久化

 首先需要在Linux系统中安装一个Redis,如果尚未安装的同学,可以参考下面链接教程安装先:

(73条消息) 单机安装Redis_其然乐衣的博客-CSDN博客

 

修改配置文件

 

创建一个数据

因为设置了只要5秒内有一次修改就会触发一次备份数据,所以就得到了备份数据 

 

 

 RDB是有可能会发生数据丢失的,因为两次备份的时间间隔会比较长。因此我们需要AOF持久化,它可以大大地提高数据的安全性,来弥补RDB缺点

二、AOF持久化

1、修改配置文件redis.conf

1.1.先禁用RDB,因为要演示AOF

1.2.开启AOF功能(默认的是no)

 1.3.AOF文件的名称,文件后缀是.aof,文件名可任意,这里我们不做修改没用默认的就行

 1.4.

 到这配置文件的修改就完成了

2.删掉rdb文件

rm -rf *.rdb

 3.重启redis

redis-server redis.conf

4.检查数据,发现证明之前的数据都清空了

 5.写新数据

6.刷新一下,aof文件就生成了,也就是备份了数据

 7.查看aof文件

 如果继续添加命令写数据

 8.停止redis和重启redis

 停止重启后,依然有以前的数据

【 这就证明了,我们确实已经实现了数据的持久化和 故障的维护】

9.

但是存在的缺陷是,aof会记录对同一个key的多次写操作,但只有最有一次写操作才意义,然而这增大了文件的大小,比RDB的文件大很多。

通过执行 bgrewriteaof 命令,可以让AOF文件执行重写功能,用最少的命令达到相同的效果  9.1 执行bgrewriteaof 命令

 9.2. 通过cat命令查询aof文件 

9.3. 通过vi查看aof文件 

会发现命令被压缩了

虽然比之前的难看些了, 但还可以看懂一些,比如num name这些

10.如果我们不自己手动执行 bgrewriteaof 命令,Redis也会在触发阈值时自动去重写AOF文件。阈值也可以在redis.conf中配置:

# AOF文件上次文件 增长超过多少百分比则触发重写
auto-aof-rewrite-percentage 100
# AOF文件体积最小多大以上才触发重写
auto-aof-rewrite-min-size 64mb

三、RDB和AOF两种持久化的对比

 注意:

        我们在实际使用中,往往会两者结合使用(数据回复优先级AOF优先于RDB)

RDB主要充一个数据备份的作用,我们可以将备份的RDB文件拷贝到别的机房,异地的容灾。当机房这个机房毁了,AOF也就毁了,但被拷贝到别的机房的RDB文件还在,那么我们的数据还是可以恢复的。所以RDB就是主要起到这么一个备份数据的作用

相关文章:

  • 计算机组成原理第二章----数据信息的表示 详解版(写的这么接地气我一下就懂了?)
  • windows 常用命令字典
  • 【案例回顾】春节一次较波折的MySQL调优
  • IDEA2020创建JavaSE项目改造成JavaWeb项目并配置tomcat
  • 分布式任务调度Schedulerx2.0工作原理
  • ATF启动(三):BL2
  • 论Orchestration和Choreography
  • JUC线程线程池和锁面试题
  • TypeScript 简介
  • css过渡效果
  • mysql中EXPLAIN命令解析
  • 【NodeJs-5天学习】第二天篇④ ——项目模块化
  • LeetCode 110.平衡二叉树 (C++)
  • 基于SpringBoot的校园闲置物品交易管理系统
  • 在线表格 循环替换 脚本
  • 【391天】每日项目总结系列128(2018.03.03)
  • Computed property XXX was assigned to but it has no setter
  • CSS 专业技巧
  • ES6 ...操作符
  • Invalidate和postInvalidate的区别
  • java8-模拟hadoop
  • Swift 中的尾递归和蹦床
  • Vue.js 移动端适配之 vw 解决方案
  • vue-cli在webpack的配置文件探究
  • 百度地图API标注+时间轴组件
  • 大数据与云计算学习:数据分析(二)
  • 读懂package.json -- 依赖管理
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 利用jquery编写加法运算验证码
  • 爬虫模拟登陆 SegmentFault
  • 前端面试之闭包
  • 在Mac OS X上安装 Ruby运行环境
  • 智能合约开发环境搭建及Hello World合约
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​用户画像从0到100的构建思路
  • #Lua:Lua调用C++生成的DLL库
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (安卓)跳转应用市场APP详情页的方式
  • (五)网络优化与超参数选择--九五小庞
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)拼包函数及网络封包的异常处理(含代码)
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NET 设计模式初探
  • .net 生成二级域名
  • .Net 应用中使用dot trace进行性能诊断
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .stream().map与.stream().flatMap的使用
  • [AIR] NativeExtension在IOS下的开发实例 --- IOS项目的创建 (一)
  • [BUUCTF 2018]Online Tool(特详解)
  • [BZOJ 4034][HAOI2015]T2 [树链剖分]