扫码阅读
手机扫码阅读

《对线面试官》| 高频 Redis 面试题(下)

152 2024-07-20

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:《对线面试官》| 高频 Redis 面试题(下)
文章来源:
咸鱼运维杂谈
扫码关注公众号

前言

继《对线面试官》| 高频 Redis 面试题(上)一文后,本文继续分享校招面试中常见的 Redis 面试题。

Redis 哨兵架构

哨兵架构是在 Redis 主从复制基础上建立的高可用解决方案。通过监控、自动故障切换和自动发现功能,提高了 Redis 的高可用性,减少了人工干预的需求。

Redis Cluster 架构

Redis 集群通过分片和提供复制及故障转移功能来管理数据,解决了 master 单点故障问题,提升了写操作的并发能力。数据通过 CRC16(KEY)%16384 哈希算法分配到不同的 master。

集群通信

Redis 集群内部节点通过 TCP 和 gossip 协议进行通信,使用 PING、PONG、MEET、FAIL等消息类型保证节点信息的一致性。

哈希槽映射与客户端数据定位

集群将数据映射到16384个哈希槽中,然后映射到 Redis 实例。客户端通过缓存的哈希槽信息定位数据所在节点。

生产环境中的 KEYS 命令

在生产环境中应慎用 KEYS * 命令,因为可能会导致服务阻塞。

Redis 4.0 的混合持久化

混合持久化结合了 RDB 文件内容和增量 AOF 日志,提高了 Redis 重启的效率。

内存用尽的影响

内存用尽时,如果设置了内存限制,会触发内存回收策略;如果未设置,可能导致进程被系统 OOM 杀死。

Redis 分布式锁

Redis 分布式锁通过 setnx 和 expire 命令来实现,但需要合并这两个命令以防锁无法释放。

Cluster 架构的高可用实现

Cluster 实现高可用通过故障检测和转移。节点通过发送 ping 消息来检测其他节点,并在失败时进行故障转移。

Cluster 不可用情况

如果三个没有 slave 的 master 节点中有一个失败,可能会导致集群因缺少哈希槽而不可用。

性能优化建议

建议保持主从节点在同一局域网,避免在压力大的 master 上增加 slave,利用散列表和集合类型数据存储来优化内存使用。

想要了解更多内容?

查看原文:《对线面试官》| 高频 Redis 面试题(下)
文章来源:
咸鱼运维杂谈
扫码关注公众号