20250107面试鸭特训营第15天

news/2025/1/10 23:26:59/

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

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 集群中不同的服务器上


http://www.ppmy.cn/news/1562088.html

相关文章

QTcpSocket 如何统计在线时长

基本原理 QTcpSocket是 Qt 库中用于 TCP 通信的类。要统计在线时长,关键思路是记录连接建立的时间和当前时间,通过计算两者的差值来得到在线时长。实现步骤 记录连接建立时间: 在连接成功的信号槽函数中记录开始时间。例如,当QTcpSocket成功连接到服务器时,会发出connecte…

【Spring】构造方法注入 属性加final

在Spring框架中,构造方法注入是一种常见的依赖注入方式。通过构造方法注入,Spring容器会在创建Bean时自动调用相应的构造方法,并将所需的依赖作为参数传入。关于构造方法注入时属性是否加final关键字,主要有以下几点区别&#xff…

『SQLite』表的创建、修改和删除

本节摘要:主要讲述SQLite中创建、删除、修改表等操作。 创建表 CREATE TABLE 语句来创建表。 修改表 ALTER TABLE 语句来修改表名称、已有表字段,或者新增字段。 删除表 DROP TABLE 语句用来删除表. 注意: 上述内容详细讲解见文章&#…

腾讯云AI代码助手编程挑战赛-百事一点通

作品简介 百事通问答是一款功能强大的智能问答工具。它依托海量知识储备,无论你是想了解生活窍门、学习难点,还是工作中的专业疑惑,只需输入问题,就能瞬间获得精准解答,以简洁易懂的方式呈现,随时随地为你…

重新面试之JVM

概念 JAVA运行环境(Java代码需要编译为字节码,jvm就是字节码运行环境)好处: 1 一次编译到处运行(运行于操作系统之上,屏蔽了操作系统之间的差异) 2 自动内存管理,垃圾回收机制(C语言…

最新最详细的配置Node.js环境教程

配置Node.js环境 一、前言 (一)为什么要配置Node.js?(二)NPM生态是什么(三)Node和NPM的区别 二、如何配置Node.js环境 第一步、安装环境第二步、安装步骤第三步、验证安装第四步、修改全局模块…

低空无人机物资运输方案技术详解

低空无人机物资运输方案技术是一种高效、灵活且成本较低的物资运输方式,以下是对该技术的详细解析: 一、方案概述 低空无人机物资运输方案利用无人机作为运输载体,在低空环境中进行物资的快速、安全运输。该方案结合了无人机的高效性、灵活…

自动化测试框架playwright 常见问题和解决方案!

自动化课程已经讲完了playwright框架,很多同学跃跃欲试,所谓实践出真知,这不在实践中就要到了一些问题,小编也给大家整理出来了,送个有需要的同学,记得点赞收藏哦~~ 01、安装问题 问题描述: 在…