[001-07-001].Redis中的BigKey使用分析

news2024/9/22 13:38:48

1、常见面试题:

  • 1.阿里的广告平台,海量数据里面查询某一固定前缀的key
  • 2.小红书,如何在生产限制keys*/flushdb/flushall等危险命令以防止误删除误使用
  • 3.美团,MEMORU USAGE命令你使用过吗
  • 4.Bikey问题,多大算big?你如何发现?如何删除?如何处理
  • 5.BigKey你做过调优吗?惰性释放lazyfree了解过吗
  • 6.MoreKey问题。生产上redis数据库有1000W记录,你如何遍历?key*可以吗?

2、MorKey问题:

2.1.数据准备:

大批量往Redis中插入2000W数据测试key

  • 1.Linux Bash下面执行如下命令,是将100万条命令写入到temp目录下的一个临时文件中:
    在这里插入图片描述
  • 2.通过redis提供的管道–prpe命令插入1000W大批量数据
    在这里插入图片描述
  • 3.查看Redis中key的数量:
    在这里插入图片描述

2.2.某快递巨头真实生产案例:

a.新闻内容:

在这里插入图片描述

b. key*:你试试100wh花费多少秒遍历查询:

  • 1.key*:这个命令有致命的弊端,在生产环境中,最好不要使用
  • 2.禁用原因:
    在这里插入图片描述

c. 生产上限制key*/flushdb/flushall等危险命令以防止误删误用:

  • 1.通过配置设置禁用这些命令,redis.conf配置文件中在SEURITY这一项中
  • 2.配置如下:
    在这里插入图片描述

2.3.不适用key*避免卡顿,那应该用什么?

a.scan命令:

使用 Scan命令用于迭代数据库中的数据库键

  • 1.英文地址介绍
  • 2.中文地址介绍
    在这里插入图片描述

b.语法:

在这里插入图片描述
在这里插入图片描述

c.特点:

在这里插入图片描述

d.使用:

在这里插入图片描述


3、BigKey:

3.1.多大的算BigKey

参考 《阿里云Redis开发规范》

在这里插入图片描述


3.2.String和二级结构:

1.BigKey不仅仅说的是key很大,还有可能是value过大

  • 1.string 是value,最大512MB但是 >= 10KB 就是bigkey
  • 2.list、hash、set和zset个数超过5000就是bigkey

3.3.BigKey危害:

  • 1.内存不均,集群迁移困难
  • 2.超时删除,大key导致阻塞
  • 3.网络流量阻塞

3.4.BigKey如何产生

  • 1.社交类:明星的粉丝列表逐步递增:
  • 2.汇总统计:某个报表,经年累月的积累

3.5.BigKey如何发现

a.命令:redis-cli --bigkeys

1.好处:

  • 给出每种数据结构Top 1 bigkey,同时给出每种数据类型的键值个数+平均大小

2.不足

  • 想查询大于10kb的所有key,--bigkeys参数就无能为力了,需要用到memory usage来计算每个键值的字节数
redis-cli --bigkeys
redis-cli -h 127.0.0.1 -p 6379 -a 111111 --bigkeys

   
//每隔 100 条 scan 指令就会休眠 0.1s,ops 就不会剧烈抬升,但是扫描的时间会变长
redis-cli -h 127.0.0.1 -p 7001 –-bigkeys -i 0.1

在这里插入图片描述


b.命令memory usage

1.计算每个键值的字节数

在这里插入图片描述
在这里插入图片描述


3 .6.删除bigkey

a.String

  • 1.一般用del,过于庞大使用unlink

b.hash

  • 1.使用hscan每次获取少量field-value,再使用hdel删除每个field
  • 2.语法
    在这里插入图片描述
  • 3.阿里手册:
    在这里插入图片描述

c.list:

  • 1.使用 ltrim 渐进式逐步删除,直到全部删除
  • 2.命令:
    在这里插入图片描述
    在这里插入图片描述
  • 3.阿里手册:
    在这里插入图片描述

d.set

  • 1.使用sscan 每次获取部分元素,再使用 srem 命令删除每个元素
  • 2.命令:
    在这里插入图片描述
  • 3.阿里手册:
    在这里插入图片描述

e.zset

  • 1.使用zscan每次获取部分元素,再使用ZREMRANGEBYRANK 命令删除每个元素
  • 2.命令:
    在这里插入图片描述
  • 3.阿里手册:
    在这里插入图片描述

2.6.BigKey生产调优:

a.阻塞和非阻塞删除命令:

在这里插入图片描述

b.优化配置:

在这里插入图片描述

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

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

相关文章

Spring之配置类解析源码解析

解析配置类 解析配置类流程图:https://www.processon.com/view/link/5f9512d5e401fd06fda0b2dd 解析配置类思维脑图:https://www.processon.com/view/link/614c83cae0b34d7b342f6d14 在启动Spring时,需要传入一个AppConfig.class给Appli…

VMware安装Ubuntu Linux Server操作系统

本文主要描述在VMware虚拟机上安装Ubuntu Linux Server操作系统,本版本集成kubernetes云原生对应的microk8s组件。 如上所示,从Ubuntu官方网站上下载Ubuntu服务器版本的安装文件 如上所示,在VMware上新建虚拟机,指定已下载的Ubunt…

基于yolov5的明厨亮灶阳光厨房老鼠检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv5的明厨亮灶阳光厨房老鼠检测系统是一种高效、智能的食品安全监测解决方案。该系统利用YOLOv5网络模型,结合深度学习技术,实现对厨房环境的实时监控与智能分析。 YOLOv5以其高速和高精度的特性,在实时目标检测任务中…

chapter09-OOP高级部分——(内部类)——day13

413-四种内部类 414-局部内部类1 记住: (1)局部内部类定义在方法中/代码块(2)作用域在方法体或者代码块中(3)本质仍然是一个类 415-局部内部类2 416-匿名内部类本质 匿名内部类只能用一次,并实例化了一个tiger对象, tiger指向它的对象,tig…

18043 找出3个数中最大的数

### 思路 1. 从键盘输入三个整数&#xff0c;使用空格分隔。 2. 比较三个整数&#xff0c;找出其中最大的数。 3. 输出最大的数。 ### 伪代码 1. 读取输入的三个整数。 2. 比较三个整数&#xff0c;找出最大的数。 3. 输出最大的数。 ### C代码 #include <iostream>…

Python编码系列—Python调试秘籍:pdb调试工具的实战应用

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

《神话:悟空》的破晓之路:文化深度与技术巅峰的交响乐章

在八月的炽热中&#xff0c;《黑神话&#xff1a;悟空》如同一道璀璨的光芒&#xff0c;划破了国产游戏的寂静夜空&#xff0c;不仅以其惊人的销量速度震撼了业界&#xff0c;更以其深厚的文化底蕴与顶尖的游戏设计&#xff0c;在全球玩家心中留下了不可磨灭的印记。这款游戏的…

Masonry的入门学习

Masonry的学习 文章目录 Masonry的学习前言使用MasonryMasonry支持的属性修饰语基础APIAuto Boxing中心点设置边距优先级创建约束更新约束使用Masonry来布局UIScrollview 小结 前言 在日常的开发中&#xff0c;我们如果面对一些很复杂的UI布局&#xff0c;我们如果统一使用fram…

并发编程之AtomicUnsafe魔法类详解

并发编程之Atomic&Unsafe魔法类详解_并发魔法类-CSDN博客

京东2025校招/社招内推信息

社招链接&#xff1a;https://zhaopin.jd.com/web/job/job_info_list/3 社招内推码&#xff1a;JC8DI 校招链接&#xff1a;https://campus.jd.com/home#/ 校招内推码&#xff1a;C49D1 有需要的同学也可私信我姓名、电话、邮箱内推已经投递的同学可私信我获取最新进展哦

国内访问GitHub很卡,steam连接断开怎么办

目录 第一章、问题分析1.1&#xff09;问题1.2&#xff09;解决&#xff1a;下载个加速器就好了 友情提醒: 先看文章目录&#xff0c;大致了解文章知识点结构&#xff0c;点击文章目录可直接跳转到文章指定位置。 第一章、问题分析 1.1&#xff09;问题 国内访问GitHub很卡怎…

Docker容器技术详解

一、Docker简介及部署方法 1.1Docker简介 1.1.1什么是docker Docker是管理容器的引擎&#xff0c;为应用打包、部署平台&#xff0c;而非单纯的虚拟化技术 docker的重要特点和优势&#xff1a; 1. 轻量级虚拟化Docker 容器相较于传统的虚拟机更加轻量和高效&#xff0c;能够…

基于langchain的多轮对话RAG

目录 概述 整体架构 代码实现 输出展示 参考 概述 相比于单轮对话&#xff0c;多轮对话要考虑历史对话记录&#xff0c;大模型需要根据对话上下文去回答用户的问题。在RAG的场景中&#xff0c;通常需要通过问题去召回和问题相关的知识&#xff0c;再将知识和问题交给大模型…

江大白 | 大模型时代,CV目标检测任务,会走向何方?

本文来源公众号“江大白”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;大模型时代&#xff0c;CV目标检测任务&#xff0c;会走向何方&#xff1f; 以下文章来源于知乎&#xff1a;深度眸 作者&#xff1a;深度眸 编辑&#…

华为手机永久关闭自动亮度 | 使用智慧场景

问题 使用华为手机时&#xff0c;无法在设置中永久性关闭自动亮度&#xff0c;因为每次手机重启后都会自动打开自动亮度。此问题目前无法通过设置去解决&#xff0c;但可以通过华为的智慧场景解决&#xff0c;下文介绍解决方案。 解决方案 智慧场景 打开智慧生活APP&#xf…

JavaScript 作用链

JavaScript 作用链是指在 JavaScript 中查找变量时所遵循的规则和路径。它描述了当前执行上下文及其父级上下文之间的关系。作用链用于解析变量&#xff0c;当在一个作用域中查找变量时&#xff0c;如果当前作用域中没有找到&#xff0c;则会沿着作用链向上查找&#xff0c;直到…

华为OD机试真题 - 查找充电设备组合 - 子集和问题(Java/Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Java/Python/JS/C/C++)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX…

51单片机——LED点阵屏

1、点阵屏简介 LED点阵屏由若干个独立的LED组成&#xff0c;LED以矩阵的形式排列&#xff0c;以灯珠亮灭来显示文字、图片、视频等。LED点阵屏广泛应用于各种公共场合&#xff0c;如汽车报站器、广告屏以及公告牌等 LED点阵屏分类 按颜色&#xff1a;单色、双色、全彩 …

多目标应用:基于SPEA2的移动机器人路径规划研究(提供MATLAB代码)

一、机器人路径规划介绍 移动机器人&#xff08;Mobile robot&#xff0c;MR&#xff09;的路径规划是 移动机器人研究的重要分支之&#xff0c;是对其进行控制的基础。根据环境信息的已知程度不同&#xff0c;路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或…

【网络安全】命令执行漏洞—远程代码执行及远程系统命令

命令执行漏洞是指Web应用程序中由于对用户输入的验证不足&#xff0c;导致恶意用户能够构造并传递一些预期之外的命令给服务器&#xff0c;从而在服务器上执行任意命令。这种漏洞可能允许攻击者获取敏感信息、破坏服务、访问系统文件&#xff0c;甚至获得服务器的控制权。 一、…