3、中间件-redis

196 阅读1分钟

Q1:redis的一致性是怎么实现的?

  • redis和mysql一致性实现:redis是从mysql获取的信息,更新信息时先更新mysql数据,再同步到redis中;如果出现redis与mysql数据不一致,则redis会检查mysql数据,之后同步到本地
  • redis保证内部(主从)数据一致性:每次从节点建立或主节点重新选举,都会执行“全量复制”,slave节点全量复制最新的master所有数据。redis集群工作正常时,slave会采用“增量复制”对每一次master新执行的修改命令做同步。

Q2: RDB快照的过程?

生成rdb快照过程两个命令:

  • save:会阻塞redis主进程,性能低不建议使用

  • bgsave:从主进程fork一个子进程,由子进程异步执行rdb快照任务,避免主进程阻塞;

Q3:为什么fork进程能够读到快照数据?

bgsave子进程是由主线程fork生成的,可以共享主线程的所有内存数据

Q4:全量复制和增量复制的区别

  • 全量复制:将主节点中的所有数据都发送给从节点。当数据量过大时,会造成很大网络开销

  • 增量复制:在复制阶段,master每将一个命令发送给slave时,都会将命令存入积压队列中,并记录当前积压队列存放的命令的偏移量范围;slave在收到master命令时,会记录下该命令的偏移量;