Redis总结(下)
1. Redis持久化
- 快照(RDB)
概述:快照是全量备份;存储格式是二进制序列化数据,非常紧凑
快照原理
redis使用操作系统的多进程COW(copy on write)机制来实现快照持久化
- AOF日志
概述:AOF日志是连续的增量备份。记录的是redis指令。长期运行过程AOF日志会变得异常巨大,需要定期进行AOF重写
AOF原理
AOF执行顺序:①参数校验、执行逻辑②存储到AOF
AOF重写
开辟一个子进程对内存进行遍历,并转换成一系列的redis操作指令,序列化到一个新的AOF文件中
序列化完毕后再将操作期间发生的增量AOF日志追加到新的AOF文件中
追加完毕后就立即替代旧的AOF日志文件
AOF的断电日志丢失问题
实际中持久化运维
- redis混合持久化
将RDB文件和AOF文件一起持久化
2. Redis的管道消息
- 什么是管道
管道的作用(实际优化点)
深入理解管道本质
3. Redis事务
- redis事务基本用法:multi(开启事务)、exec(提交事务)、discard(放弃事务)
- redis事务执行流程
开启事务
将指令提交到redis服务器的事务队列中
执行exec指令,就开始执行整个事务
- redis事务不具备原子性
如果在多个命令执行过程中,有一条指令是错误的,该指令会报异常,但是不会影响其他命令执行
- 事务优化
redis一个事务通常伴随多条指令,一个指令就要经过一次网络读写。因此事务结合pipeline一起使用,可以将多次IO压缩成一次IO
- redis事务乐观锁
watch指令(必须在watch之前,禁止在multi和exec之间)
4. Redis集群
- 主从同步
- sentinal(哨兵)
- Codis
- Cluster
5. 主从同步
- 概述:主从不是集群;有了主从,在没有哨兵的情况下可以通过运维让从节点过来接管
- redis的CAP
Consistant:一致性
Availability:可用性
Partition tolerance:分区容忍性
通常:发生网络分区时,一致性和可用性两难全
redis满足最终一致性
在主从产生网络分区的情况下,redis依然可用,因此redis满足可用性,通过从从同步实现最终一致性
- 主从同步与从从同步
redis支持主从同步和从从同步,减轻主节点的同步负担
增量同步
主节点将对内存产生修改的指令记录到一个环形缓冲区
异步将buffer中的指令同步到从节点
从节点一边执行指令流进行同步,一边向主节点反馈自己同步到哪
潜在问题:如果网络分区,环形缓冲区写满,覆盖了原先没有同步的指令,会造成数据丢失
快照同步
主节点先执行系统调用bgsave,将内存数据快照到磁盘
将快照文件发送到从节点
从节点先清
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
涵盖各大厂考官最爱问知识点,22年最新整理!