什么是Redis的大Key和热Key?项目中一般是怎么解决的?

一、首先我们要搞清楚大key和热key是什么。

1. 大Key

通常以Key的大小和Key中成员的数量来综合判定。比如Key本身的Value过大,一个String类型的Key,它的值为10 MB;Key中的成员数过多:一个ZSET类型的Key,它的成员数量为10000个。

2. 热key

通常以其接收到的Key被请求频率来判定,例如:QPS集中在特定的Key,Redis实例的总QPS为10000,而其中一个Key的每秒访问量达到了8000。

3. 导致的问题

  • 大Key一般产生的问题就是占用大量的带宽以及资源资源,导致系统出现OOM,访问阻塞等问题。
  • 热Key占用大量的CPU资源,影响其他请求并导致整体性能降低。

4. 如何找到大Key和热Key呢?

通过redis-cli的bigkeys和hotkeys参数查找大Key和热Key,当然如果有第三方监控平台也是可以的。

二、解决办法

1. 针对大key的问题

  • 我们可以对大Key进行拆分,例如将含有数万成员的一个HASH Key拆分为多个HASH Key,并确保每个Key的成员数量在合理范围。在Redis集群架构中,拆分大Key能对数据分片间的内存平衡起到显著作用。
  • 定期进行清理掉无效的key,腾出更多的内存空间。

2. 针对热Key的问题

  • 在Redis集群架构中对热Key进行复制,然后改名迁移到其他分片。例如将热Key foo复制出3个内容完全一样的Key并名为foo2、foo3、foo4,将这三个Key迁移到其他数据分片来解决单个数据分片的热Key压力。
  • 读写分离:如果热Key的产生来自于读请求,可以将实例改造成读写分离架构来降低每个数据分片的读请求压力,甚至可以不断地增加从节点。
  • 做好系统的监测,建立预警机制,提前做好防范。
相关推荐
龙腾AI白云1 小时前
AI检索增强生成(RAG):解决大模型幻觉的核心落地技术
数据库·人工智能·机器学习·知识图谱
一 乐1 小时前
动漫书销售商城|基于springboot + vue动漫书销售商城(源码+数据库+文档)
java·数据库·vue.js·spring boot·毕业设计
zzj_2626101 小时前
MySQL常用操作
数据库·mysql
其实防守也摸鱼1 小时前
Fastjson 反序列化漏洞(JNDI注入)
android·数据库·安全·oracle·自动化·fastjson·反序列化
haerapi2 小时前
把 PostgreSQL 复制巡检做成可审计闭环:确定性采集、阈值判定与受控模型归纳
数据库·postgresql
微学AI3 小时前
不让每一步都调用最贵模型:用蓝耘智能路由改造自主式研究 Agent
数据库·人工智能·蓝耘
yjb.gz3 小时前
Oracle19 RAC查看集群状态及磁盘空间情况(巡检)
数据库
钝挫力PROGRAMER3 小时前
开发踩坑记:MyBatis selectKey、空 SQL
数据库·sql·mybatis
JosieBook3 小时前
【数据库】MySQL 实战精通系列 · 第6篇:InnoDB 存储引擎、日志与崩溃恢复
数据库·mysql
杨云龙UP4 小时前
TDengine 3.4.2.8 Community 三节点三副本生产集群部署实战(DNode/MNode/taosAdapter/Explorer)
大数据·linux·运维·数据库·tdengine·时序库