Redis面试题笔记
637 常见的数据类型 String Set Hash List Zset (Sorted Set) BitMap => 位图,考勤,或者xxx分配情况 HyperLogLog => 用户访问的独立用户数量 GEO => 地理 应用场景: 缓存 实时系统 消息队列 分布式锁 计数器:页面访问量、点赞数、评论数 651 Redis 主从复制的实现原理 为什么需要主从复制 **提供故障恢复:**数据冗余&故障恢复,某个节点宕机了,但是其他节点还活着; **负载均衡:**提供负载均衡,配合读写分离策略,主节点写操作,从节点提供读操作; ⭐ **高可用:**主从复制是Redis的高可用的基础,也是哨兵和集群实施的基础。 两种同步复制方式: 全量 & 增量 全量复制:分三阶段 主节点发送SYNC命令与从节点进行连接,开始同步, 主从之间建立联系; 主节点将当前数据生成RDB文件,发送给从节点; 发送的期间,主节点将期间的所有写命令缓存到Replication buffer。最后发送Replication buffer的写命令给从节点。 增量复制 短暂失联后同步数据 主要有三个步骤: 从服务器在恢复网络后,会发送 psync 命令给主服务器,此时的 psync 命令里的 offset 参数不是 -1; 主服务器收到该命令后,然后用 CONTINUE 响应命令告诉从服务器接下来采用增量复制的方式同步数据; 然后主服务将主从服务器断线期间,所执行的写命令发送给从服务器,然后从服务器执行这些命令。 那么关键的问题来了,主服务器怎么知道要将哪些增量数据发送给从服务器呢? 答案藏在这两个东西里: repl_backlog_buffer,是一个「环形」缓冲区,用于主从服务器断连后,从中找到差异的数据; (环形堆积缓冲区) replication offset,标记上面那个缓冲区的同步进度,主从服务器都有各自的偏移量,主服务器使用master_repl_offset 来记录自己,「写」到的位置,从服务器使用 slave_repl_offset 来记录自己「读」到的位置。 ·repl_backlog_buffer,是一个「环形」缓冲区,用于主从服务器断连后,从中找到差异的数据; 保持连接与断线重连 Redis中,主节点会和从节点保持长连接,以确保数据的持续同步; ...