精华内容
下载资源
问答
  • aof

    2021-02-15 23:39:23
    AOF三种写入策略 always 客户端的每一个写操作都保存到aof文件当,这种策略很安全,但是每个写请注都有IO操作,所以也很慢。 everysec appendfsync的默认写入策略,每秒写入一次aof文件,因此,最多可能会丢失1s...

    AOF三种写入策略

    1. always

    客户端的每一个写操作都保存到aof文件当,这种策略很安全,但是每个写请注都有IO操作,所以也很慢。

    1. everysec

    appendfsync的默认写入策略,每秒写入一次aof文件,因此,最多可能会丢失1s的数据。

    1. no

    Redis服务器不负责写入aof,而是交由操作系统来处理什么时候写入aof文件。更快,但也是最不安全的选择,不推荐使用。

    AOF重写

    AOF将客户端的每一个写操作都追加到aof文件末尾,指将多个指令相同的key进行重写,生成一个最少命令集

    两种重写方式

    通过在redis.conf配置文件中的选项no-appendfsync-on-rewrite可以设置是否开启重写,这种方式会在每次fsync时都重写,影响服务器性,因此默认值为no,不推荐使用。

    默认不重写aof文件

    no-appendfsync-on-rewrite no
    客户端向服务器发送bgrewriteaof命令,也可以让服务器进行AOF重写

    让服务器异步重写追加aof文件命令

    bgrewriteaof
    AOF重写方式也是异步操作,即如果要写入aof文件,则Redis主进程会forks一个子进程来处理,如下所示:

    重写aof文件的好处

    压缩aof文件,减少磁盘占用量。
    将aof的命令压缩为最小命令集,加快了数据恢复的速度。
    AOF文件损坏

    在写入aof日志文件时,如果Redis服务器宕机,则aof日志文件文件会出格式错误,在重启Redis服务器时,Redis服务器会拒绝载入这个aof文件,可以通过以下步骤修复aof并恢复数据。

    1、备份现在aof文件,以防万一。

    2、使用redis-check-aof命令修复aof文件,该命令格式如下:

    修复aof日志文件

    $ redis-check-aof -fix file.aof

    3、重启Redis服务器,加载已经修复的aof文件,恢复数据。

    Redis订阅发布,队列不做详细补充,百度上案例太多了0.0.

    总结:

    如果你只是单纯把Redis作为缓存服务器,那么可以完全不用考虑持久化,在大多数企业级bat中redis只扮演着cache service角色 。AOF更加安全,阔以及时更新文件到文件中,恢复相对比较慢

    关于Redis hash一致性算法 布隆过滤器 hyperLoglog,redis令牌,redis漏洞限流后续后面慢慢有时间进行学习和更新

    展开全文
  • AOF

    2019-08-14 11:20:00
    什么是 AOF 客户端执行的每条命令都会写在 AOF 文件中; 当发生宕机时,通过载入 AOF 文件恢复数据; AOF 三种策略 always 客户端执行的命令会存入缓冲区,always 策略会使命令一到缓冲区就写入磁盘; 优点:不丢...

    RDB 存在的问题

    • 耗时
    • 耗性能

    什么是 AOF

    • 客户端执行的每条命令都会写在 AOF 文件中;
    • 当发生宕机时,通过载入 AOF 文件恢复数据;

    AOF 三种策略

    always
    • 客户端执行的命令会存入缓冲区,always 策略会使命令一到缓冲区就写入磁盘;
    • 优点:不丢数据;
    • 缺点:IO 开销大;
    everysec(默认)
    • 每秒将缓冲区的命令写入磁盘;
    • 优点:减少 IO;
    • 缺点:丢 1s 数据;
    no
    • 操作系统决定什么时候把缓存中的数据刷入硬盘;
    • 优点:不用自己管;
    • 缺点:不可控;

    AOF 重写

    • 把过期的数据丢弃;
    • 把重复的数据合并成最新值;
    • 减少磁盘占用量;
    • 加速恢复速度;

    两种实现 AOF 重写的方式

    bgrewriteaof
    • 客户端发起,fork 出一个子进程,完成对 AOF 文件的整合;
    AOF 重写配置
    • auto-aof-rewrite-min-size AOF 文件重写需要到达的大小;
    • auto-aof-rewrite-percentage AOF 文件增长率,增长到这个比例就重写;
    • aof_current_size 实时记录 AOF 当前尺寸(单位:字节);
    • aof_base_size AOF 上次启动和重写的尺寸(单位:字节);

    AOF 相关配置

    • appendonly yes
    • appendfilename "appendonly-${port}.aof"
    • appendfsync everysec
    • dir /bigdiskpath
    • no-appendfsync-on-rewrite yes 在 AOF 重写时,不做正常的 rewrite 操作;
    • auto-aof-rewrite-percentage 100
    • auto-aof-rewrite-min-size 64mb
    • aof-load-truncated yes
    展开全文
  • Redis AOF

    2021-08-07 23:17:03
    Redis AOF持久化详解 转载:https://blog.csdn.net/qq_42183409/article/details/90215479 redis中aof备份策略中的配置参数 转载:https://blog.csdn.net/zdyueguanyun/article/details/54376815 Redis的AOF配置...

    Redis AOF持久化详解

    转载:https://blog.csdn.net/qq_42183409/article/details/90215479

    redis中aof备份策略中的配置参数

    转载:https://blog.csdn.net/zdyueguanyun/article/details/54376815

    Redis的AOF配置

    转载:https://blog.csdn.net/m0_38086372/article/details/107432480

    AOF 重写
      由于AOF持久化是Redis不断将写命令记录到 AOF 文件中,随着Redis不断的进行,AOF 的文件会越来越大,文件越大,占用服务器内存越大以及 AOF 恢复要求时间越长。为了解决这个问题,Redis新增了重写机制,当AOF文件的大小超过所设定的阈值时,Redis就会启动AOF文件的内容压缩,只保留可以恢复数据的最小指令集。可以使用命令 bgrewriteaof 来重写。

      也就是说 AOF 文件重写并不是对原文件进行重新整理,而是直接读取服务器现有的键值对,然后用一条命令去代替之前记录这个键值对的多条命令,生成一个新的文件后去替换原来的 AOF 文件。

       AOF 文件重写触发机制:通过 redis.conf 配置文件中的 auto-aof-rewrite-percentage:默认值为100,以及auto-aof-rewrite-min-size:64mb 配置,也就是说默认Redis会记录上次重写时的AOF大小,默认配置是当AOF文件大小是上次rewrite后大小的一倍且文件大于64M时触发。

      这里再提一下,我们知道 Redis 是单线程工作,如果 重写 AOF 需要比较长的时间,那么在重写 AOF 期间,Redis将长时间无法处理其他的命令,这显然是不能忍受的。Redis为了克服这个问题,解决办法是将 AOF 重写程序放到子程序中进行,这样有两个好处:

      ①、子进程进行 AOF 重写期间,服务器进程(父进程)可以继续处理其他命令。

      ②、子进程带有父进程的数据副本,使用子进程而不是线程,可以在避免使用锁的情况下,保证数据的安全性。

      使用子进程解决了上面的问题,但是新问题也产生了:因为子进程在进行 AOF 重写期间,服务器进程依然在处理其它命令,这新的命令有可能也对数据库进行了修改操作,使得当前数据库状态和重写后的 AOF 文件状态不一致。

      为了解决这个数据状态不一致的问题,Redis 服务器设置了一个 AOF 重写缓冲区,这个缓冲区是在创建子进程后开始使用,当Redis服务器执行一个写命令之后,就会将这个写命令也发送到 AOF 重写缓冲区。当子进程完成 AOF 重写之后,就会给父进程发送一个信号,父进程接收此信号后,就会调用函数将 AOF 重写缓冲区的内容都写到新的 AOF 文件中。

      这样将 AOF 重写对服务器造成的影响降到了最低。
     

    redis中aof备份策略中的配置参数

    在使用redis时,都会配置相应的存储策略,以保证redis并不会由于意外挂掉,在短时间内重启时数据不会消失。在当前的版本中,redis提供了bgsave和aof两种策略,本文主要描述了aof中的相关参数以及为什么这样是可以足够安全的。本文的描述主要参考redis的conf文件以及各项网络

    appendonly

    开启aof特性,这个控制是否启用aof.

    appendfilename

    写入文件的文件名。开启aof之后,每条命令(除读之外的命令),均会写入到文件中,这里即实际写入的文件.

    appendfsync

    写入策略,默认值everysec,每秒写一次(调用flush)。另外两个值,always | no,分别表示每次redis写命令之外就写文件,和由操作系统保证。always对硬盘压力大,everysec是一个平衡值,no对硬盘压力最小,但调度由系统控制,丢失数据风险最大.

    no-appendfsync-on-rewrite

    是否在后台写时同步单写,默认值no(表示需要同步).这里的后台写,表示后台正在重写文件(包括bgsave和bgrewriteaof.bgrewriteaof网上很多资料都没有涉及到。其实关掉bgsave之后,主要的即是aof重写文件了).no表示新的主进程的set操作会被阻塞掉,而yes表示新的主进程的set不会被阻塞,待整个后台写完成之后再将这部分set操作同步到aof文件中。但这可能会存在数据丢失的风险(机率很小),如果对性能有要求,可以设置为yes,仅在后台写时会异步处理命令.

    auto-aof-rewrite-percentage

    aof文件增长比例,指当前aof文件比上次重写的增长比例大小。aof重写即在aof文件在一定大小之后,重新将整个内存写到aof文件当中,以反映最新的状态(相当于bgsave)。这样就避免了,aof文件过大而实际内存数据小的问题(频繁修改数据问题).

    • 作用: 自动触发AOF重写

    auto-aof-rewrite-percentage 100 # 触发重写百分比 (指定百分比为0,将禁用aof自动重写功能)
    auto-aof-rewrite-min-size 64mb # 触发自动重写的最低文件体积(小于64mb不自动重写)

    Redis能够在AOF文件大小增长了指定百分比时,自动隐式调用 BGREWRITEAOF 命令进行重写。

    这里是它如何工作的说明:

    (1)Redis记录上一次执行AOF重写后的文件大小作为基准。(如果启动后没有发生过重写,则使用启动时的AOF文件大小)。
    (2)将该基准值与当前文件大小进行比较,如果当前体积超出基准值的指定百分比,将触发重写。
    另外你还需要指定要重写的AOF文件的最小体积(auto-aof-rewrite-min-size),这可以避免在文件体积较小时多次重写。

    如果指定百分比为0,将禁用AOF自动重写功能

    auto-aof-rewrite-min-size

    aof文件重写最小的文件大小,即最开始aof文件必须要达到这个文件时才触发,后面的每次重写就不会根据这个变量了(根据上一次重写完成之后的大小).此变量仅初始化启动redis有效.如果是redis恢复时,则lastSize等于初始aof文件大小.

    aof-load-truncated

    指redis在恢复时,会忽略最后一条可能存在问题的指令。默认值yes。即在aof写入时,可能存在指令写错的问题(突然断电,写了一半),这种情况下,yes会log并继续,而no会直接恢复失败.

    Linux内核参数

    另外,与aof重写相关的一个linux内核参数即是 overcommit_memory。即在进行重写时,如何分配子进程内存的问题。(重写是后台重写,会分配子进程).默认值为0,建立设置为1,以保证 子进程内存能够分配成功(即使用copyOnWrite内存分配策略,在没有set命令时会和主进程使用同一份内存),并且不会判断当前内存是否够用.

    展开全文
  • redis aof

    2021-09-21 15:32:27
    毕竟,AOF 是以文件的形式在记录接收到的所有写命令。随着接收的写命令越来越多,AOF 文件会越来越大。这也就意味着,我们一定要小心 AOF 文件过大带来的性能问题。 node2:/root/redis#tail -1000f appendonly.aof ...


    毕竟,AOF 是以文件的形式在记录接收到的所有写命令。随着接收的写命令越来越多,AOF 文件会越来越大。这也就意味着,我们一定要小心 AOF 文件过大带来的性能问题。

    node2:/root/redis#tail -1000f appendonly.aof 
    *2

    0
    *3
    $3
    set
    $8
    20210922
    $12
    zhaoyangjian
    *3
    $3
    set
    $8
    20210921
    $12
    zhaoyangjian

    展开全文
  • AOF详解

    2020-03-08 19:26:46
    AOF 命令同步 同步命令到 AOF 文件的整个过程可以分为三个阶段: 1:命令传播:Redis 将执行完的命令、命令的参数、命令的参数个数等信息发送到 AOF 程序中。 2:缓存追加:AOF 程序根据接收到的命令数据,将命令...
  • AOF日志

    2020-10-09 23:30:05
    1.AOF日志 1.1 写后日志 AOF日志为写后日志,Redis先执行命令,把数据写入内存,然后才记录日志。如下图所示: 1.2 AOF日志记录的内容 AOF日志里记录的是Redis收到的每一条命令,这些命令以文本形式保存。以记录...
  • 启用AOF 备份AOF文件 删除数据 使用AOF文件恢复数据 5.2 步骤 实现此案例需要按照如下步骤进行。 步骤一:使用AOF文件恢复数据 1)修改配置文件 [root@redisA ~]# redis-cli -h 192.168.4.51 –p 6351 -a 123456 //...
  • aof rdb

    2020-05-27 06:40:29
    redis的 rdb 和 aof 持久化的区别 aof,rdb是两种 redis持久化的机制。用于crash后,redis的恢复。 rdb的特性如下: Code: fork一个进程,遍历hash table,利用copy on write,把整个db dump保存下来。 save, ...
  • redis AOF

    2019-09-16 00:38:28
    AOF 是什么 以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容...
  • AOF开端

    2020-08-09 16:25:46
    AOF持久化 从上一张博客中知道RDB并且知道这种持久化的方式就是将使用“快照”的方式将数据持久到对应的文件中,RDB存储还是有点弊端下面我来分析一下: 1. 存储时间量大,效率低 基于快照的思想,每次读写都是全部...
  • redis写命令不是直接写在文件硬盘中,而是写在缓冲区中。...AOF可以将每条命令写入到AOF文件中,随着时间的推移。并发量逐渐变大。aof文件逐渐变大,如果使用aof恢复会很慢。 如果文件太多对于文件的管理,写入...
  • Redis AOF相关

    2020-01-17 22:02:59
    1、开启AOF 设置 appendonly yes 表示开启AOF,默认不开启,每一次写操作都会记录一条日志,用于恢复数据使用 这么做有什么好处?------能够保证数据持久化的实时性 AOF文件名通过appendfilename配置设置,默认...
  • 一篇文章彻底理解Redis持久化:RDB和AOF

    万次阅读 多人点赞 2020-04-07 10:53:09
    AOF持久化默认是不开启的,需要修改配置文件,如: # appendonly改为yes,开启AOF appendonly yes # AOF文件的名字 appendfilename "appendonly.aof" # AOF文件的写入方式 # everysec 每个一秒将缓存区内容写入文件 ...
  • Redis持久化一一AOF

    2021-01-07 11:23:31
    AOF(Append Only File):以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据...
  • AOF 持久化

    2021-02-23 19:50:02
    目录1、AOF简介2、AOF 配置3、开启 AOF4、AOF 文件恢复5、 AOF 重写6、AOF的优缺点7、RDB-AOF混合持久化 1、AOF简介 Redis的持久化方式之一RDB是通过保存数据库中的键值对来记录数据库的状态。而另一种持久化方式 ...
  • Redis_AOF

    2020-06-04 11:15:22
    AOFAOF 的实现命令追加 AOF文件写入和同步AOF 重写-解决AOF文件膨胀AOF 后台重写 RDB & AOF RDB 持久化保存数据库状态的方法是将键值对保存在RDB文件中,而AOF持久化保存数据库状态的方式是将命令保存到AOF...
  • Redis AOF原理

    万次阅读 多人点赞 2018-11-17 12:07:40
    AOF 写入键值对过程 Redis 分别提供了 RDB 和 AOF 两种持久化机制: RDB 将数据库的快照(snapshot)以二进制的方式保存到磁盘中。 AOF 则以协议文本的方式,将所有对数据库进行过写入的命令(及其参数)记录到...
  • AOF持久化

    万次阅读 多人点赞 2018-08-30 01:47:31
    RDB持久化是将进程数据写入文件,而AOF持久化(即Append Only File持久化),则是将Redis执行的每次写命令记录到单独的日志文件中(有点像MySQL的binlog);当Redis重启时再次执行AOF文件中的命令来恢复数据。 与RDB...
  • Redis的AOF配置

    千次阅读 2020-07-18 17:57:39
    AOF配置: no-appendfsync-on-rewrite : 后台执行(RDB的save | aof重写)时appendfsync设为no auto-aof-rewrite-percentage: 自动触发AOF重写 aof-load-truncated: 指定当发生AOF文件末尾截断时的处理方式 ...
  • Redis的AOF

    2021-01-19 17:10:46
    四、AOF持久化 RDB持久化是将进程数据写入文件,而AOF持久化(即Append Only File持久化),则是将Redis执行的每次写命令记录到单独的日志文件中(有点像MySQL的binlog);当Redis重启时再次执行AOF文件中的命令来...
  • Redis AOF文件

    2020-10-24 18:34:03
    【Redis AOF文件】 1、关于AOF AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。 AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。...
  • Redis_aof

    2021-04-16 16:14:51
    aof 配置文件 appendonly yes appendfsync always #appendfsync everysec # appendfsync no /* * 将命令追加到 AOF 文件中, * 如果 AOF 重写正在进行,那么也将命令追加到 AOF 重写缓存中。 */ void ...
  • Redis 持久化 AOF

    2021-06-29 23:36:47
    Redis 持久化 AOF

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 73,096
精华内容 29,238
关键字:

aof