Redis(十二)Bigkey

news2024/11/17 4:45:00

文章目录

  • 游标案例
    • 生成100万测试数据key
    • 生产上限制keys */flushdb/flushall等危险命令
    • 不使用keys *:scan
  • Biigkey案例
    • 多大算大
    • 发现bigkey
    • 渐进式删除
    • 生产调优
    • 示例问题

游标案例

生成100万测试数据key

shell:

for((i=1;i<=100*10000;i++)); do echo "set k$i v$i" >> /tmp/redisTest.txt ;done;
cat /tmp/redisTest.txt | /opt/redis-7.0.0/src/redis-cli -h 127.0.0.1 -p 6379 -a 111111 --pipe

生产上限制keys */flushdb/flushall等危险命令

通过配置设置禁用这些命令,redis.conf在SECURITY这一项中 自

# Example:
#
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
#
# It is also possible to completely kill a command by renaming it into
# an empty string:
#
# rename-command CONFIG ""
    rename-command keys ""
    rename-command flushdb ""
#

不使用keys *:scan

SCAN 命令是一个基于游标的迭代器,每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程。

SCAN 返回一个包含两个元素的数组,

第一个元素是用于进行下一次迭代的新游标,

第二个元素则是一个数组, 这个数组中包含了所有被迭代的元素。如果新游标返回零表示迭代已结束。

SCAN的遍历顺序

非常特别,它不是从第一维数组的第零位一直遍历到末尾,而是采用了高位进位加法来遍历。之所以使用这样特殊的方式进行遍历,是考虑到字典的扩容和缩容时避免槽位的遍历重复和遗漏。

scan 0 match * count 1

在这里插入图片描述

Biigkey案例

多大算大

来源:阿里云Redis规范
在这里插入图片描述

发现bigkey

redis-cli --bigkeys -a 111111 

好处

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

不足

想查询大于10kb的所有key,–bigkeys参数就无能为力了,需要用到memory usage来计算每个键值的字节数

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

计算每个键值
https://redis.com.cn/commands/memory-usage.html
在这里插入图片描述

渐进式删除

  1. String
一般用del,如果过于庞大unlink
  1. hash
使用hscan每次获取少量field-value,再使用hdel删除每个field
  1. list
使用ltrim渐进式逐步删除,直到全部删除完成

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

  1. set
使用sscan每次获取部分元素,再使用srem命令删除每个元素

在这里插入图片描述

  1. zset
使用zscan每次获取部分元素,再使用ZREMRANGEBYRANK命令删除每个元素

在这里插入图片描述

生产调优

redis.conf

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

示例问题

  1. 阿里广告平台,海量数据里查询某一固定前缀的key

  2. 小红书,你如何生产上限制keys */flushdb/flushall等危险命令以防止误删误用?

  3. 美团,MEMORY USAGE 命令你用过吗?

  4. BigKey问题,多大算big?你如何发现?如何删除?如何处理?

  5. BigKey你做过调优吗?惰性释放lazyfree了解过吗?

  6. Morekey问题,生产上redis数据库有1000W记录,你如何遍历?key*可以吗?

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

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

相关文章

CF1404BTree Tag/ BZOJ0487. 树上追逐详解

1.题目 传送门:Tree Tag - 洛谷 2.思路 我们考虑什么情况下Alice可以获胜. 如果​ ≤ da&#xff0c;则Alice可以一步就追上Bob. 如果Alice处在一个能覆盖整棵树的点&#xff0c;即2da 1≥树的直径&#xff0c;那么Bob也无论走到哪里Alice都能追到,Alice获胜. 其它情况下…

浅析现代计算机启动流程

文章目录 前言启动流程概述磁盘分区格式MBR磁盘GPT磁盘隐藏分区 传统BIOS引导传统BIOS启动流程 UEFI引导UEFI引导程序UEFI启动流程 引导加载程序启动操作系统相关参考 前言 现代计算机的启动是一个漫长的流程&#xff0c;这个流程中会涉及到各种硬件的配置与交互&#xff0c;包…

(基于xml配置Aop)学习Spring的第十五天

一 . Spring Aop编程简介 再详细点 , 如下 二 . 基于xml配置Aop 解决proxy相关问题 解决问题开始用xml配置AOP 导入pom坐标 <dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.6</vers…

npm淘宝镜像源换新地址

新的淘宝npm镜像源地址&#xff1a;https://registry.npmmirror.com 切换新的镜像源 npm config set registry https://registry.npmmirror.com然后再执行以下操作查看是否成功 npm config list如果没安装过淘宝镜像源的&#xff0c;则直接安装 npm install -g cnpm --regi…

机器学习之DeepSequence软件使用学习1

简介 DeepSequence 是一个生成性的、无监督的生物序列潜变量模型。给定一个多重序列比对作为输入&#xff0c;它可以用来预测可获得的突变&#xff0c;提取监督式学习的定量特征&#xff0c;并生成满足明显约束的新序列文库。它将序列中的高阶依赖性建模为残差子集之间约束的非…

【C/C++】字符串长度 ☞ ‘sizeof‘ ‘strlen‘ ‘.length()‘

在C或C中&#xff0c;strlen和sizeof是两个经常被用到的&#xff0c;但作用完全不同的函数或操作符。 结论写在前面&#xff1a; strlen用于获取字符串的实际长度&#xff08;不包含结尾的空字符&#xff09;&#xff0c;而sizeof用于获取变量或类型的内存占用大小。对于std:…

肯尼斯·里科《C和指针》第10章 结构和联合(1)结构的基础知识

聚合数据类型(aggregate data type)能够同时存储一个以上的单独数据。C提供了两种类型的聚合数据类型&#xff1a;数组和结构。 数组是相同类型的元素的集合&#xff0c;它的每个元素是通过下标引用或指针间接访问来选择的。 结构也是一些值的集合&#xff0c;这些值称为它的成…

EasyX图形库学习(三、用easyX控制图形界面中的小球、图片-加载、输出)

目录 小球视频 图像输出函数 loadimage用于从文件中读取图片 putimage在当前设备上绘制指定图像。 initgraph 函数 图片输出 代码详解&#xff1a; 1. 初始化图形界面 2. 设置背景颜色并清除屏幕 3. 加载并显示图片 4. 等待用户输入并退出程序 图形界面中的小球 1…

AI新工具(20240205) AI 对联/春联 - 输入描述,自动生成春联图片;AI写作引擎;满分简历

AI 对联/春联 - 输入描述&#xff0c;自动生成春联图片 AI 对联/春联 AI 对联/春联是一个由YunYouJun开发的开源项目&#xff0c;用于生成春节对联。 https://github.com/YunYouJun/ai-sfc 满分简历 - HR在7秒内决定一份简历去留&#xff0c;让你的简历脱颖而出 满分简历 …

服务器和CDN推荐

简介 陆云Roovps是一家成立于2021年的主机服务商&#xff0c;主要业务是销售美国服务器、香港服务器及国外湖北十堰高防服务器&#xff0c;还有相关CDN产品。&#xff08; 地址&#xff1a;roovps&#xff09; 一、相关产品

计算机设计大赛 深度学习+opencv+python实现昆虫识别 -图像识别 昆虫识别

文章目录 0 前言1 课题背景2 具体实现3 数据收集和处理3 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数&#xff1a;2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 4 MobileNetV2网络5 损失函数softmax 交叉熵5.1 softmax函数5.2 交叉熵损失函数 6 优化器SGD7 学…

优思学院|杰克·韦尔奇谈领导的角色是什么?

杰克韦尔奇作为通用电气公司前任董事长及首席执行官的职业轨迹极为辉煌。在他的领导下&#xff0c;通用电气在20年的时间里市值飙升&#xff0c;从130亿美元跃升至高达4,800亿美元&#xff0c;使其成为世界上市值最高的公司之一。他一生获得了无数荣誉&#xff0c;被誉为“世纪…

《动手学深度学习(PyTorch版)》笔记7.5

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过&…

电商开放API商品采集接口、关键字搜索接口,获取商品ID、商品主图接口

API是application programming interface&#xff08;应用程序接口&#xff09;的简称&#xff0c;是一些预先定义的函数&#xff0c;目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力&#xff0c;而又无需访问源码&#xff0c;或理解内部工作机制的细节。…

2024年【A特种设备相关管理(电梯)】报名考试及A特种设备相关管理(电梯)免费试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 A特种设备相关管理&#xff08;电梯&#xff09;报名考试是安全生产模拟考试一点通总题库中生成的一套A特种设备相关管理&#xff08;电梯&#xff09;免费试题&#xff0c;安全生产模拟考试一点通上A特种设备相关管理…

版本管理git及其命令介绍-附带详细操作

前言 在版本管理时代之前&#xff0c;人们写软件的方式如下图1所示 图1 无版本管理的代码 其坏处就是软件版本随着时间越来越多&#xff0c;每个版本修改了什么内容&#xff0c;修改了哪些文件&#xff0c;如果没有详细记录也不知道。这样久会导致如果我们想回退到某个版本内…

C语言——联合体类型

&#x1f4dd;前言&#xff1a; 在前面两篇文章&#xff1a;C语言——结构体类型&#xff08;一&#xff09;和C语言——结构体&#xff08;二&#xff09;中&#xff0c;我们讲述了C语言中重要的数据类型之一&#xff1a;结构体类型&#xff0c;今天我们来介绍一下C语言中的另…

BVH动画绑骨蒙皮并在Unity上展示

文章目录 Blender绑定骨骼Blender蒙皮Blender中导入bvh文件将FBX导入Unity Blender绑定骨骼 先左上角红框进入model模式&#xff0c;选中要绑定的模型&#xff0c;然后进入Edit模式把骨骼和关节对齐。 &#xff08;选中骨骼&#xff0c;G移动&#xff0c;R旋转&#xff09; 为…

苹果手机如何录屏?这里告诉你答案!

苹果公司的iPhone以其卓越的性能和用户体验受到了全球消费者的喜爱&#xff0c;而录屏功能作为手机的一项重要功能&#xff0c;能够帮助我们记录手机屏幕上的操作&#xff0c;分享游戏技巧、制作教程视频等。本文将为您介绍苹果手机如何录屏&#xff0c;帮助您更好地掌握录屏技…

零售新业态,让老牧区焕发新生命

敦煌老马一声魔性“浇给”勾起了无数人对羊肉的食欲&#xff0c;而当大家集体涌入餐厅或者在网上下单&#xff0c;都想要尝一尝网红同款的时候&#xff0c;可能并没有想过这样一个问题——为什么在今天&#xff0c;即便是远离牧区的现代大城市&#xff0c;草原羊肉却一样能触手…