面试题答案
一键面试基本原理
Redis 脚本复制基于 Redis 的主从复制机制。主节点执行脚本后,通过主从复制链路将脚本相关操作发送给从节点,以保证各节点数据状态的一致性。
关键步骤
- 脚本创建:
- 客户端向 Redis 主节点发送
EVAL
或EVALSHA
命令来创建脚本。如果使用EVAL
,主节点会计算脚本的 SHA1 哈希值,并将脚本内容存储在内部。如果使用EVALSHA
,主节点会先检查脚本的 SHA1 哈希值是否存在,若不存在则返回错误。
- 客户端向 Redis 主节点发送
- 主节点执行:
- 主节点执行脚本,在执行过程中,主节点会记录脚本对数据的修改操作。这些操作会以 Redis 协议格式记录,包括对键值对的增删改等操作。
- 复制传播:
- 主节点通过 Redis 的主从复制机制,将记录的脚本操作以“写命令”的形式发送给从节点。从节点接收这些命令。对于
EVAL
命令,从节点也会计算脚本的 SHA1 哈希值并存储脚本内容;对于EVALSHA
命令,从节点同样检查哈希值是否存在,若不存在可能请求主节点发送完整脚本。
- 主节点通过 Redis 的主从复制机制,将记录的脚本操作以“写命令”的形式发送给从节点。从节点接收这些命令。对于
- 从节点执行:
- 从节点接收到主节点发送的脚本相关操作命令后,按照顺序执行这些命令,从而实现与主节点相同的数据状态变化,完成脚本在多节点的同步执行。