【Redis】Redis 关于 BigKey 的实践规约

目录

一、BigKey 的概念

1.1 普通 key 的设计规则

1.2 BigKey 的定义

1.3 BigKey 存在的问题

二、BigKey 的发现与解决方案

第一种方式:redis-cli --bigkeys

第二种方式:scan扫描

第三种方式:第三方工具

第四种方式:网络监控


一、BigKey 的概念

1.1 普通 key 的设计规则

遵循的基本格式:[业务名称]:[数据名]:[id](login:user:1)

key 的长度建议:长度不超过 44 字节(否则会占用更多内存)

key 的设计建议:建议尽量不要包含特殊字符

1.2 BigKey 的定义

BigKey 通常以 Key 的大小和 Key 中成员的数量来综合判定,例如:

  • Key 本身的占用内存过大:一个 String 类型的 Key,它的值为 5 MB。

  • Key 中的成员个数过多:一个 ZSET 类型的 Key,它的成员数量为10,000个。

  • Key 占用内存大的同时数量众多:一个Hash类型的Key,它的成员数量虽然只有1,000个但这些成员的Value(值)总大小为100 MB。

推荐大小与数量:

  • 单个key的value小于10KB

  • 对于集合类型的key,建议元素数量小于1000

1.3 BigKey 存在的问题

  1. 网络阻塞导致带宽被占满:对 BigKey 执行读请求时,少量的 QPS(每秒查询率)就可能导致带宽使用率被占满,导致 Redis 实例,乃至所在物理机变慢。

  2. 内存资源分配不均匀:BigKey 所在的 Redis 实例内存使用率远超其他实例,无法使数据分片的内存资源达到均衡

  3. 计算耗时久导致线程阻塞:对元素较多的 hash、list、zset 等做运算会耗时较久,使主线程被阻塞。

  4. 序列化导致 CPU 压力飙升:对 BigKey 的数据序列化和反序列化会导致 CPU 的使用率飙升,影响 Redis 实例和本机其它应用

二、BigKey 的发现与解决方案

第一种方式:redis-cli --bigkeys

redis-cli --bigkeys:利用 redis-cli 提供的 --bigkeys 参数,可以遍历分析所有 key,并返回Key 的整体统计信息与每个数据的 Top1 的 big key

第二种方式:scan扫描

scan扫描:自己编程,利用 scan 扫描 Redis 中的所有 key,利用strlen、hlen 等命令判断 key 的长度(此处不建议使用MEMORY USAGE)

第三种方式:第三方工具

第四种方式:网络监控

网络监控:自定义工具,监控进出 Redis 的网络数据,超出预警值时主动告警(阿里云 Redis 监控)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/85535.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/85535.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Golang 与 C/C++ 交互实践

在软件开发的实际场景中,我们常常会遇到需要将不同语言的优势结合起来的情况。Golang 凭借其高效的并发性能和简洁的语法,在网络编程和系统开发领域备受青睐;而 C/C 则以其强大的底层操作能力,在系统资源管理方面具有独特优势。那…

五子棋流量主小程序单模式多模式开源版

功能和特点: 核心游戏功能: 1515 标准棋盘 黑白棋交替落子 自动判断胜负和平局 悔棋功能 计时功能 UI 设计: 木纹风格棋盘 立体感棋子(使用阴影和渐变) 响应式布局,适配不同屏幕尺寸 胜利弹窗动画 交互体验…

Python古代文物成分分析与鉴别研究:灰色关联度、岭回归、K-means聚类、决策树分析

原文链接:tecdat.cn/?p42718分析师:Gan Tian 在文化遗产保护领域,古代玻璃制品的成分分析一直是研究中西方文化交流的关键课题。作为数据科学家,我们在处理某博物馆委托的古代玻璃文物保护咨询项目时,发现传统分析方法…

RabbitMQ消息队列实战指南

RabbitMQ 是什么? RabbitMQ是一个遵循AMQP协议的消息中间件,它从生产者接收消息并传递给消费者,在这个过程中,根据路由规则进行消息的路由、缓存和持久化。 AMQP,高级消息队列协议,是应用层协议的一个开放…

用Java将PDF转换成GIF

为什么要将 PDF 文件转换为 GIF 图片? PDF 是一种矢量图像格式(因此可以根据指定的尺寸进行渲染),而 GIF 是一种有损的、固定尺寸的位图文件,像素值固定。因此,将 PDF 转换为 GIF 文件时,我们需…

Redis之分布式锁(2)

上一篇文章我们介绍了什么是分布式锁和分布式锁的一些基本概念。这篇文章我们来讲解一下基于数据库如何实现分布式锁。 基于数据库实现分布式锁 基于数据库实现分布式锁可以分为两种方式,分别是基于数据库表和基于数据库排他锁。 基于数据库表 要实现分布式锁&…

智能检测护航电池产业:容量设备如何提升效率与安全?

电池容量是衡量其储能能力的重要指标,直接影响设备续航与使用寿命。电池容量检测设备通过模拟真实使用场景,精准测量电池的充放电性能,为电池生产、质检及回收环节提供关键数据支持,成为保障电池品质与安全的核心工具。 核心功能…

介绍一款免费MES、开源MES系统、MES源码

一、系统概述: 万界星空科技免费MES、开源MES、商业开源MES、市面上最好的开源MES、MES源代码、适合二开的开源MES。 1.万界星空开源MES制造执行系统的Java开源版本。 开源mes系统包括系统管理,车间基础数据管理,计划管理,物料控制…

构建高性能日志系统:QGroundControl日志模块深度解析

引言:日志系统的重要性 在无人机地面站系统中,日志记录是诊断问题、分析性能的关键基础设施。QGroundControl(QGC)作为领先的开源无人机地面站软件,其日志系统设计值得深入探讨。本文将揭示QGC日志系统的核心技术&…

k8s查看内存占用前十的20个pod服务,不包括job

在 Kubernetes 中,您可以使用 kubectl 命令结合一些工具来查看内存占用前十的 Pod 服务,并排除 Job 类型的 Pod。以下是一个示例命令,您可以在终端中运行: kubectl top pods --all-namespaces --no-headers | grep -v job | sort …

Spring Boot 集成 LangChain4j 示例

文章目录 概述一、DeepSeek API Key 获取二、Spring Boot 集成 LangChain4j 示例三、拓展建议 概述 LangChain4j 是 LangChain 在 Java 生态下的实现,它是一个开源库,帮助你更方便地在 Spring Boot 应用中集成大语言模型(如 OpenAI 的 GPT-4…

数据差异的iOS性能调试:设备日志导出和iOS文件管理

在复杂iOS项目中,尤其是集成多个第三方服务、使用混合数据源(本地远程缓存)的系统里,“数据不一致”类问题极具迷惑性。一方面,数据看似可用,逻辑层也没有明显错误;另一方面,用户层面…

二进制与生活:从数字世界到人生哲理

二进制与生活:从数字世界到人生哲理 最近重温《少年谢尔顿》,被剧中谢尔顿与二进制对话的场景深深打动。这让我思考:二进制这个看似冰冷的数字系统,其实与我们的生活有着千丝万缕的联系。今天,让我们一起走进二进制的世…

基于SMB协议的内网存活主机探测技术研究

一、 技术背景 SMB(Server Message Block)协议是Windows环境中广泛使用的网络文件共享协议,默认开放于445端口。由于其在Windows系统中的核心地位,SMB协议常被用作内网探测的重要切入点。本文系统介绍多种基于SMB的存活主机探测技术,帮助安全…

IDEA21中文乱码解决办法

我改了很多,可能也改了一些没用的 1.在VM options中添加-Dstdout.encodingUTF-8 -Dstderr.encodingUTF-8 2.IDEA 控制台输出设置为 UTF-8 打开 IDEA → File → Settings(或 CtrlAltS) 搜索 "Encoding" 设置 Project Encoding 和…

时序数据库概念及IoTDB特性详解

一、数据库管理系统概述 数据,如同空气般普遍存在于我们的数字生活中,每一次点击手机都可能产生并记录数据。这些数据被存储在数据库中,而数据库实质上是“数据的集合”。数据库管理系统(DBMS)则负责这些“数据容器”…

leetcode:263. 丑数(python3解法,数学相关算法题)

难度:简单 丑数 就是只包含质因数 2、3 和 5 的 正 整数。 给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:n 6 输出:true 解释&am…

RK3568笔记八十五:LVGL播放AVI视频

若该文为原创文章,转载请注明原文出处。 最近有个需求,需要播放视频,但使用的框架是LVGL显示,所以了解了下LVGL怎么实现播放视频。 目前了解到的方法有两种: 一、使用ffmpeg方式,此方法适用于大部分视频 二、使用opencv方式,此方法适用于大部分视频 三、使用woshin…

stm32使用定时器PWM

1、定时器TIM PSC-Prescaler-预分频器 CNT-Counter-计数器 ARR-Auto Reload Register-自动重装寄存器 RCR-Repetition Counter Register-重复计数器 1、时钟来源:晶振提供频率,时钟树这些才提供时钟 分频系数 计数 3、实例 上面展示了假设使用外部石英晶振提供32.76…