持久化-AOF 持久化策略基本操作|学习笔记

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 快速学习持久化-AOF 持久化策略基本操作

开发者学堂课程【Redis 入门到精通(进阶篇)持久化-AOF 持久化策略基本操作】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/765/detail/13424


持久化-AOF 持久化策略基本操作

 

内容介绍

一、AOF 写数据过程

二、AOF 写数据三种策略

三、AOF 功能开启

四、演示过程

五、AOF 功能开启

 

一、AOF 写数据过程

image.png

据上图,当客户端发出一条指令到服务器时,服务器接收到指令并没有马上记录,而是放到临时区域,这个区域即 AOF 写命令刷新缓存区,若还有指令依旧放在缓存区,这些指令最终生成.aof 存储文件,到一定阶段,将命令同步到 AOF 文件中。

 

二、AOF 写数据三种策略

1、always(每次)

每次写入操作均同步到 AOF 文件中,数据零误差,性能较低,不建议使用

2、everysec(每秒)

每秒将缓冲区中的指令同步到 AOF 文件中,数据准确性较高,性能较高,建议使用,也是默认配置

在系统中突然宕机的情况下丢失1秒内的数据

3、no(系统控制)

由操作系统控制每次同步到 AOF 文件的周期,整体过程不可控

 

三、AOF 功能开启

1、配置

appandonly  yes | no

2、作用

是否开启 AOF 持久化功能,默认为不开启状态

3、配置

appandfsync  always | everysec | no

4、作用

AOF 写数据策略

 

四、演示过程

1、测试 always

进入 conf 文件进行修改

[root@localhost conf]# vim redis-6379.conf

开启对 AOF 支持

appendonly yes

指定 AOF 策略

appandfsync always

启动

[root@localhost conf]# redis-server redis-6379.conf

在数据目录中看效果

[root@localhost conf]#cd.

[root@localhost redis-4.0.4]#cd data

[root@localhost data]#ll

total28

-rm-r--r--.1 root root 22979 Oct 13 19:34 6379.log

-rm-r--r--.1 root root     0 Oct 13 19:32 appengonly.aof (此文件为 AOF 的持久化存储文件)

-rm-r--r--.1 root root   157 Oct 13 19:34 dump-6379.rdb

[root@localhost data]#

在客户端进行连接

[root@localhost /]#redis-cli

127.0.0.1:6379>set name 123

OK

127.0.0.1:6379>

在左侧服务端进行查看,文件里有内容

在客户端接着进行

127.0.0.1:6379> lpush list1 a b c d e

(integer) 5

在左侧服务端接着查看文件,文件变大

从上述演示可看出 always 每执行一个指令时,会记录一次。

在右侧执行 get 指令

127.0.0.1:6379>get name

“123”

127.0.0.1:6379>

在左侧发现没有变化,查看具体内容

[root@localhost data]# Cat appendonly.aof

文件打开后,可以阅读。

从上述演示可看出 always 每执行一个指令,保存一个指令。

2、测试 everysec

进入文件

[root@localhost data]#cd.

[root@localhost redis-4.0.4]#cd conf

[root@localhost conf]# vim redis-6379.conf

改配置文件

appendonly yes

appendfsync everysec

由于 everysec 每秒存储一次,速度很快,几乎看不出与每次一存 always 的区别,但也可以进行存储。

左侧服务端重新启动

[root@localhost conf]# ps -ef | grep redis-

root   8985     1  0   19:52  ?    00:00:00  redis-server  *:6379

root   9124  8551  0   19:57 pts/0  00:00:00  grep-color-auto redis-

[root@localhost conf]# kill -s 9  8985

重新启动

[root@localhost conf]# redis-serve redis-6379.conf

[root@localhost conf]#

此时已换成全新配置,右侧客户端进行连接

[root@localhost/]# redis-cli

127.0.0.1:6379>

此时查看数据文件,数据已进入。

 

五、AOF功能开启

1、配置

Appendfilenama filename

2、作用

AOF持久化文件名,默认文件名为 appendonly.aof,建议配置为 appendonly-端口号.afo

3、配置

dir

4、作用

AOF 持久化文件保存路径,与 RDB 持久化文件保持一致即可

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
Shell Linux
Centos7:“Entering emergency mode. Exit the shell to continue”错误解决方法
想过很多朋友有遇到这种情况,就是正在远程使用centos7系统时,一旦让远程虚拟机或服务器断电或强制关机,那么再次重启时就会出现“Entering emergency mode. Exit the shell to continue.”的错误。
12166 1
Centos7:“Entering emergency mode. Exit the shell to continue”错误解决方法
|
Kubernetes Cloud Native 安全
一文彻底搞懂 Container
设想一下,在我们的日常项目开发过程中,存在一个应用服务,其使用一些基础库函数并具有某些依赖项。如果我们在不支持这些依赖项的环境平台上运行此应用程序,那么,我们可能会遇到意外错误。随着 DevOps 及云原生理念的注入,我们希望我们所开发的应用程序能够可以跨多个操作系统及平台正常运行。
1365 0
|
Linux 网络安全 开发工具
|
Web App开发 存储
Python+selenium 自动化-操作已启用的chrome浏览器实例演示,chrome启用调试端口方法
Python+selenium 自动化-操作已启用的chrome浏览器实例演示,chrome启用调试端口方法
602 0
Python+selenium 自动化-操作已启用的chrome浏览器实例演示,chrome启用调试端口方法
|
机器学习/深度学习 缓存 Oracle
【数据库设计与实现】第7章:缓存与检查点
缓存与检查点设计原则数据缓冲区与检查点是相辅相成的,所以放在同一个章节介绍。由于CPU与持久化设备之间存在巨大的速度差距,所以在内存中引入缓冲区缩小这个差距。从读的角度来看,将热点数据或预判用户可能读取的数据提前加载到内存中,从而将持久化设备的读时延和带宽提升至内存的时延和带宽。从写的角度来看,直接修改缓冲区中的数据而不是磁盘中的数据,可以带来两方面的优势。其一,将持久化设备的写时延和带宽提升至内
【数据库设计与实现】第7章:缓存与检查点
|
5月前
|
SQL 关系型数据库 MySQL
如何在 MySQL 或 MariaDB 中导入和导出数据库
如何在 MySQL 或 MariaDB 中导入和导出数据库
673 0
|
8月前
|
关系型数据库 MySQL 数据库连接
解决 mysql8.0 ERROR 1045 (28000): Access denied for user ‘ODBC‘@‘localhost‘ (using password: NO)用户访问拒绝
解决 mysql8.0 ERROR 1045 (28000): Access denied for user ‘ODBC‘@‘localhost‘ (using password: NO)用户访问拒绝
2786 52
解决 mysql8.0 ERROR 1045 (28000): Access denied for user ‘ODBC‘@‘localhost‘ (using password: NO)用户访问拒绝
|
8月前
|
Java 测试技术 开发者
Java线程池ThreadPoolExcutor源码解读详解09-4种拒绝策略
本文介绍了线程池的四种拒绝策略:AbortPolicy、DiscardPolicy、DiscardOldestPolicy和CallerRunsPolicy,并通过代码示例展示了它们在任务过多时的不同处理方式。AbortPolicy会抛出异常并停止主线程;DiscardPolicy会默默丢弃新任务;DiscardOldestPolicy会抛弃队列中最旧的任务来接纳新任务;而CallerRunsPolicy则是由调用者线程执行被拒绝的任务,以减缓新任务的提交速度。这四种策略适用于不同的场景,开发者可以根据需求选择合适的策略。
726 5
|
JavaScript
你要是还学不会,请提刀来见 Typora+PicGo+Gitee + node.js 打造个人高效稳定优雅图床
你要是还学不会,请提刀来见 Typora+PicGo+Gitee + node.js 打造个人高效稳定优雅图床
159 1
你要是还学不会,请提刀来见 Typora+PicGo+Gitee + node.js 打造个人高效稳定优雅图床

热门文章

最新文章