关于redis:Redis-AOF持久化

51次阅读

共计 1011 个字符,预计需要花费 3 分钟才能阅读完成。

Redis AOF 长久化

1、AOF 长久化蕴含的命令:
1.1 SET
    
1.2 SADD(将一个或多个成员元素退出到汇合中,曾经存在于汇合的成员元素将被疏忽。Redis2.4 版本以前,SADD 只承受单个成员值。)(set add)1.3 RPUSH(将一个或多个值插入到列表的尾部)
2、AOF 长久化的实现:命令追加、文件写入、文件同步
2.1 追加到 aof_buf 缓冲区的开端,协定格局:2.1.1 文件头(和 RDB 文件头格局雷同)2.1.2 RDB 格局的二进制数据段
    
    2.1.3 AOF 格局的文本数据段
    
2.2 文件写入:flushAppendOnlyFile() 将 aof_buf 缓冲区的内容写入到 aof 文件。问:flushAppendOnlyFile 的选项值 appendfsync 蕴含了:1)always,写入并同步。2)everysec:写入,超过 1 秒再同步到 aof 文件,默认值。3)写入,不同步。这里的写入和同步是什么意思?答:是操作系统的写入和同步,在调用 write 函数时,是先将内容写入数据缓冲区的,当缓冲区满或超过特定时限才会写入磁盘

2.3 AOF 文件载入与数据还原
   
    步骤:启动载入 -> 创立伪客户端(无网络链接)-> (1)从 AOF 取命令 -> (2)读取、发送并执行一条命令 -> 载入实现
    
    注:上述步骤(1)和(2)是 loop 执行的
3、AOF 的重写
3.1 目标:解决 AOF 文件体积收缩

3.2 实现原理:创立新的 AOF 文件代替原有的 AOF 文件,替换过程剔除了冗余命

    如将 RPUSH A + RPUSH B 两条命令 精简为 RPUSH A, B

3.3 aof_rewrite 函数 是下载所有 redis db 数据的过程

3.4 同 RDB 长久化雷同,AOF 重写过程也是 fork 子过程解决的

3.5 fork 子过程解决重写时,主过程失常解决客户端命名(非阻塞)。为保证数据一致性,当执行一个命令之后,会同时给 AOF 缓冲区 (2.2 所述) 和 AOF 从新缓冲区 (AOF 重写启动时创立) 发送命令。重写完结时再将 AOF 缓冲区的命令写入新的 AOF 文件
4、问题:
4.1 RDB 长久化 和 AOF 长久化咱们应用的是哪个?咱们对 redis 的应用场景大部分都是缓存,对数据的安全性要求并不是很高,选 RDB 

4.2 如果咱们应用 AOF 长久化,appendfsyc 参数值该如何选?我感觉是 everysec,在性能和数据安全上的取舍是中庸的

4.3 AOF 的重写 和 RDB 长久化很类似,都是下载 redis db 数据到磁盘。保留的文件格式是不同的

    

正文完
 0