iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Redis持久化之AOF
  • 813
分享到

Redis持久化之AOF

2024-04-02 19:04:59 813人浏览 独家记忆
摘要

背景:RDB不足之处1.耗时,耗性能生成快照文件耗时,load快照文件耗时Fork子进程网络开销写文件磁盘I/O开销 2.不可控,丢失数据会丢失最后一次快照最后操作的数据。 一、工作流程Redis写操作

背景:RDB不足之处
1.耗时,耗性能
生成快照文件耗时,load快照文件耗时
Fork子进程网络开销
写文件磁盘I/O开销

2.不可控,丢失数据
会丢失最后一次快照最后操作的数据。

一、工作流程
Redis写操作命令 ——> aof缓冲区 ——> aof文件

注意,aof缓冲区的数据同步到磁盘的频率d由aof策略决定

二、AOF三种策略

1.Always 总是

每条指令都即时写入
不会丢失数据,磁盘I/O开销

2.Every second每秒

系统默认策略
每分钟写入一次
可能丢失一秒数据

3.No系统自动

不可控

3、AOF重写

随着时间得推移,aof文件日益变大。会降低磁盘性能,降低数据恢复速度。
目的:1.减少磁盘占用;2.加快恢复速度。

重写操作

方式一,客户端手动发送指令bgrewriteof
服务端fork子进程,子进程对内存中的数据进行回塑然后写入现有的aof文件。

方式二,通过配置文件触发
文件增长率
auto-aof-rewrite-percentage 100

最小文件尺寸
auto-aof-rewrite-min-size 64mb

四、AOF实验

1.redis写操作

27.0.0.1:6379> set hello world
OK
127.0.0.1:6379> set hello PHP
OK
127.0.0.1:6379> set hello java
OK
127.0.0.1:6379> set hello jack
OK
127.0.0.1:6379> set zhang san
OK
127.0.0.1:6379> set li si
OK
127.0.0.1:6379> set li xiaolong
OK

上述操作多次覆写hello,li两个key。

2.查看aof日志文件

$ sudo cat -b /var/lib/redis/appendonly.aof 
     1  REDIS0009�  redis-ver5.0.3�
�    2  redis-bits�@�ctime��]used-mem�غ
 aof-preamble��$e���q   �*2
     3  $6
     4  SELECT
     5  $1
     6  0
     7  *3
     8  $3
     9  set
    10  $5
    11  hello
    12  $5
    13  world
    14  *3
    15  $3
    16  set
    17  $5
    18  hello
    19  $3
    20  php
    21  *3
    22  $3
    23  set
    24  $5
    25  hello
    26  $4
    27  java
    28  *3
    29  $3
    30  set
    31  $5
    32  hello
    33  $4
    34  jack
    35  *3
    36  $3
    37  set
    38  $5
    39  zhang
    40  $3
    41  san
    42  *3
    43  $3
    44  set
    45  $2
    46  li
    47  $2
    48  si
    49  *3
    50  $3
    51  set
    52  $2
    53  li
    54  $8
    55  xiaolong

3.重写aof

127.0.0.1:6379> bgrewriteaof
Background append only file rewriting started

4.查看重写后的aof日志文件

whqlkj@whqlkj:~$ sudo cat -b /var/lib/redis/appendonly.aof 
     1  REDIS0009�  redis-ver5.0.3�
�    2  redis-bits�@�ctime����]used-mem�ػ
 aof-preamble���zhangsanlxiaolonghellojack��XȰ-���

五、RDB与AOF对比

对比环节 RDB AOF
启动优先级
数据恢复速度
文件大小 小(rdb二进制压缩文件) 大(重写后的日志记录文件)
数据安全 rdb丢失数据(可能会丢失最后一次save/bgsave快照之后操作的数据) aof根据策略决定(详见3种同步策略)
操作重量级 重(rdb快照) 轻(aof追加日志)
您可能感兴趣的文档:

--结束END--

本文标题: Redis持久化之AOF

本文链接: https://www.lsjlt.com/news/37847.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • oracle怎么显示表的字段
    如何显示 oracle 表的字段 在 Oracle 数据库中,可以使用 DESC 命令显示表的字段。 语法: DESC table_name 参数: table_name:要显示字段的表...
    99+
    2024-05-14
    oracle
  • oracle怎么看所有的表
    在 oracle 数据库中查看所有表的步骤:连接到数据库运行查询:select table_name from user_tables; 如何使用 Oracle 查看所有表 ...
    99+
    2024-05-14
    oracle
  • oracle怎么显示行数
    如何使用 oracle 显示行数 在 Oracle 数据库中,有两种主要方法可以显示行数: 1. 使用 COUNT 函数 SELECT COUNT(*) FROM table_n...
    99+
    2024-05-14
    oracle
  • oracle怎么显示百分比
    oracle中显示百分比的方法有:使用百分号“%”;使用to_char()函数;使用format()函数(oracle 18c及更高版本);创建自定义函数。 Oracle 显...
    99+
    2024-05-14
    oracle
  • oracle怎么删除列
    oracle 中删除列的方法有两种:1)使用 alter table table_name drop column column_name 语句;2)使用 drop colum...
    99+
    2024-05-14
    oracle
  • sql怎么查看表的索引
    通过查询系统表,可以获取表的索引信息,包括索引名称、是否唯一、索引类型、索引列和行数。常用系统表有:mysql 的 information_schema.statistics、postg...
    99+
    2024-05-14
    mysql oracle
  • sql怎么查看索引
    您可以使用 sql 通过以下方法查看索引:show indexes 语句:显示表中定义的索引列表及其信息。explain 语句:显示查询计划,其中包含用于执行查询的索引。informat...
    99+
    2024-05-14
  • sql怎么查看存储过程
    如何查看 sql 存储过程的源代码:使用 show create procedure 语句直接获取创建脚本。查询 information_schema.routines 表的 routi...
    99+
    2024-05-14
  • sql怎么查看视图表
    要查看视图表,可以使用以下步骤:使用 select 语句获取视图中的数据。使用 desc 语句查看视图的架构。使用 explain 语句分析视图的执行计划。使用 dbms 提供...
    99+
    2024-05-14
    oracle python
  • sql怎么查看创建的视图
    可以通过sql查询查看已创建的视图,具体步骤包括:连接到数据库并执行查询select * from information_schema.views;查询结果将显示视图的名称、...
    99+
    2024-05-14
    mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作