20250107面试鸭特训营第15天

更多特训营笔记详见个人主页【面试鸭特训营】专栏

250107

1. 如何解决 Redis 中的热点 key 问题?

  • 访问频率占比过大 或 宽带占比过大 的 key 定义为热点 key
  • 由于 Redis 的读写操作是单线程进行,热点 key 可能会占用大量 CPU 资源,在集群环境下导致流量不均衡

如何发现热点 key

解决方案优点缺点
根据业务经验简单省事经验判断不一定准确
redis 集群监控使用简单每次发生状况都需要进行排查
hotkey监控4.0版本后 redis 自带需要扫描整个ketspace ,且实时性不好
monitor 命令redis1.0 自带功能非常消耗性能
客户端收集性能损耗低成本较大,需要聚合计算平台查看计算后的结果
代理层收集客户端使用方便构建代理的成本不低,且转发有性能损耗

如何解决热点 key

  • 多级缓存
    • 一级缓存
      • 一般时候应用程序本地缓存(JVM 内存中的缓存)
    • 二级缓存
      • Redis 缓存
    • 当数据不存在于一级缓存中时,才会请求二级缓存
    • 可以有效减低 Redis 的访问次数
  • 拆分热点 key
    • 可以将 test 这个缓存拆分成 test1 test2 test3 ,他们三个各缓存一部分数据,不同用户仅需访问不同数据
    • 当热度降低下来时,再访问替换数据

2. Redis 集群的实现原理是什么?

  • 主要方案是分片集群 + 主从复制

分片集群方案

  • 总共有 16384 个哈希槽
  • 将 16384 个哈希槽平均分配给不同的实例
  • 读写数据时,通过哈希算法计算有效值,该值对 16384 取余,通过余数判断其所属实例

在这里插入图片描述

主从复制方案

  • Redis 集群中有多个主节点,每个主节点都可以进行写操作,提高并发写能力
  • 每个主节点都可以有多个从节点,且从节点数据信息与主节点保持全量一致,保证并发读能力
  • 不同主节点间会定期向其他主节点发送心跳包,以检测主节点的健康状况,如果某个主节点死亡,集群会通过选举机制选择一个新的主节点,并重新分配哈希值

3. Redis 中的 Big Key 问题是什么?如何解决?

  • Big Key 是指一个内存空间占用较大的 key

Big Key 的危害

  • 内存分布不均匀导致查询效受影响
  • Redis 单线程执行,操作大 key 时间较长,可能造成阻塞
  • 网络传输时大 key 占用较多资源,可能导致客户端超时

Big Key 的解决方案

  • 开发方面
    • 将存储对象压缩后再存储
    • 将一个大 key 拆成多个小 key
    • 选取更加合适的数据结构进行存储
  • 业务方面
    • 仅存储必要数据,不存储不常用信息
    • 选择性展示信息,而非全部进行展示
  • 数据分布方面
    • 将大 key 拆散分布到 Redis 集群中不同的服务器上

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值