11、BigKey

news2024/12/23 0:26:51

BigKey

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

2、MoreKey案例
大批量往redis里面插入2000W测试数据key
Linux Bash下面执行,插入100W
在这里插入图片描述

生成100W条redis批量设置kv的语句(key=kn,value=vn)写入到/tmp目录下的redisTest.txt文件中

for((i=1;i<=100*10000;i++)); do echo “set k i v i v ivi” >> /tmp/redisTest.txt ;done;

通过redis提供的管道–pipe命令插入100W大批量数据
结合自己机器的地址:

cat /tmp/redisTest.txt | /opt/redis-7.0.0/src/redis-cli -h 127.0.0.1 -p 6379 -a 111111 --pipe
多出来的5条,是之前的其它测试数据,100w数据插入redis花费5.8秒左右
在这里插入图片描述

某快递巨头真实生产案例新闻
在这里插入图片描述
keys * 你试试100W花费多少秒遍历查询
在这里插入图片描述
key * 这个指令有致命的弊端,在实际环境中最好不要使用
在这里插入图片描述
生产上限制keys */flushdb/flushall等危险命令以防止误删误用?
通过配置设置禁用这些命令,redis.conf在SECURITY这一项中
在这里插入图片描述

*不用keys 避免卡顿,那该用什么
scan命令登场,一句话,类似mysql limit的但不完全相同

Scan 命令用于迭代数据库中的数据库键
在这里插入图片描述
在这里插入图片描述
CAN 命令是一个基于游标的迭代器,每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程。

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

SCAN的遍历顺序
非常特别,它不是从第一维数组的第零位一直遍历到末尾,而是采用了高位进位加法来遍历。之所以使用这样特殊的方式进行遍历,是考虑到字典的扩容和缩容时避免槽位的遍历重复和遗漏。
在这里插入图片描述
3、BigKey案例

多大算Big
在这里插入图片描述
在这里插入图片描述
可以容纳和大小判定不等价

哪些危害

内存不均,集群迁移困难
超时删除,大key删除作梗
网络流量阻塞

如何产生

社交类,如王心凌粉丝列表,典型案例粉丝逐步递增
汇总统计,如某个报表,月日年经年累月的积累

如何发现

redis-cli --bigkeys
好处,见最下面总结
给出每种数据结构Top 1 bigkey,同时给出每种数据类型的键值个数+平均大小
不足
想查询大于10kb的所有key,–bigkeys参数就无能为力了,需要用到memory usage来计算每个键值的字节数

在这里插入图片描述
在这里插入图片描述
MEMORY USAGE 键:计算每个键值的字节数
在这里插入图片描述
如何删除
在这里插入图片描述
普通命令

String:一般用del,如果过于庞大unlink
hash:使用hscan每次获取少量field-value,再使用hdel删除每个field
在这里插入图片描述
在这里插入图片描述
list:使用ltrim渐进式逐步删除,直到全部删除完成
在这里插入图片描述
在这里插入图片描述
set:使用sscan每次获取部分元素,再使用srem命令删除每个元素
在这里插入图片描述
在这里插入图片描述
zset:使用zscan每次获取部分元素,再使用ZREMRANGEBYRANK命令删除每个元素
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
BigKey生产调优
redis.conf配置文件LAZY FREEING相关说明

阻塞和非阻塞删除命令

在这里插入图片描述
优化配置
在这里插入图片描述

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

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

相关文章

数据库名字添加中文

Jetbrains 可以呀&#xff0c;这个ui 相当棒 from database import Sqlite3Database from googletrans import Translator import csvif __name__ "__main__":TRANS_EN2ZH Falsetranslator Translator()sqlite Sqlite3Database("./drurmu.db")sqlite.r…

深入篇【C++】手搓模拟实现二叉搜索树(递归/非递归版本)常见应用场景(K模型与KV模型)

深入篇【C】手搓模拟实现二叉搜索树(递归/非递归版本&#xff09;&&常见应用场景 Ⅰ.二叉搜索树概念Ⅱ.二叉搜索树模拟实现(递归与非递归)①.定义结点②.构造二叉树③.插入结点④.删除结点(重要)⑤.查找结点⑥.析构二叉树⑦.拷贝二叉树⑧.二叉树赋值 Ⅲ.二叉搜索树应用…

Cadence+硬件每日学习十个知识点(38)23.8.18 (Cadence的使用,界面介绍)

文章目录 1.Cadence有共享数据库的途径2.Cadence启动3.Cadence界面菜单简介&#xff08;file、edit、view、place、options&#xff09;4.Cadence界面的图标简介5.我的下载资源有三本书 1.Cadence有共享数据库的途径 答&#xff1a; AD缺少共享数据库的途径&#xff0c;目前我…

Apache-DBUtils

目录 封装方法 引出dbutils 案例 当关闭connection后&#xff0c;resultset结果集就无法使用了&#xff0c;这就使得resultset不利于数据的管理 封装方法 我们可以将结果集先存储在一个集合中&#xff0c;当connection关闭后&#xff0c;我们可以通过访问集合来访问结果集 …

Educational Codeforces Round 110 (Rated for Div. 2) C. Unstable String

dp写法&#xff1a;f[i][j]表示第i位&#xff0c;当前位为j&#xff0c;能往前找的最大的合法长度。 #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl \nusing namespace std;typedef pair<int, int> PII; type…

Redis进阶篇 - 04发布订阅、布隆过滤器、过期策略、回收机制、管道...核心知识原理

Redis底层原理篇&#xff0c;​让学习绚丽多彩起来&#xff01;&#xff01;&#xff01;&#xff08;需要原图私信&#xff09;

【服务器】Strace显示后台进程输出

今天有小朋友遇到一个问题 她想把2331509和2854637这两个进程调到前台来&#xff0c;以便于在当前shell查看这两个python进程的实时输出 我第一反应是用jobs -l然后fg &#xff08;参考这里&#xff09; 但是发现jobs -l根本没有输出&#xff1a; 原因是jobs看的是当前ses…

【Docker】Docker Desktop配置资源:cpu、内存等(windows环境下)

Docker Desktop配置资源&#xff1a;cpu、内存等&#xff08;windows环境下&#xff09; 一、WSL2 以及 hyper-v区别&#xff0c;二者安装docker desktop1.WSL2和hyper-v区别2.安装Docker Desktop 二、docker desktop限额配置&#xff0c;资源配置方法 Docker 是指容器化技术&a…

Redis进阶底层原理- Redis结构图与底层数据编码结构

Redis底层原理篇&#xff0c;​让学习绚丽多彩起来&#xff01;&#xff01;&#xff01;&#xff08;需要原图私信&#xff09;

DAMO-YOLO:实时目标检测设计的报告

ReadPaperhttps://readpaper.com/pdf-annotate/note?pdfId4748421678288076801eId1920373270663763712 Abstract 在本报告中&#xff0c;我们提出了一种快速准确的目标检测方法&#xff0c;称为DAMO-YOLO&#xff0c;它比最先进的YOLO系列实现了更高的性能。DAMO-YOLO 通过…

并发编程系列 - ReadWriteLock

实际工作中&#xff0c;为了优化性能&#xff0c;我们经常会使用缓存&#xff0c;例如缓存元数据、缓存基础数据等&#xff0c;这就是一种典型的读多写少应用场景。缓存之所以能提升性能&#xff0c;一个重要的条件就是缓存的数据一定是读多写少的&#xff0c;例如元数据和基础…

[python] 使用Jieba工具中文分词及文本聚类概念

前面讲述了很多关于Python爬取本体Ontology、消息盒InfoBox、虎扑图片等例子&#xff0c;同时讲述了VSM向量空间模型的应用。但是由于InfoBox没有前后文和语义概念&#xff0c;所以效果不是很好&#xff0c;这篇文章主要是爬取百度5A景区摘要信息&#xff0c;再利用Jieba分词工…

衣服材质等整理(时常更新)

参考文章&图片来源 https://zhuanlan.zhihu.com/p/390341736 00. 天然纤维 01. 化学纤维 02. 聚酯纤维&#xff08;即&#xff0c;涤纶&#xff09; 一种由有机二元酸和二元醇通过化学缩聚制成的合成纤维。具有出色的抗皱性和保形性&#xff0c;所制衣物在穿着过程中不容…

2023HW-8月(10-15)53个0day,1day漏洞汇总含POC、EXP

点击"仙网攻城狮”关注我们哦~ 不当想研发的渗透人不是好运维 让我们每天进步一点点 简介 2023HW-8月10-15号0day、1day漏洞汇总&#xff08;已更新&#xff09;&#xff0c;包含以下漏洞需要自取。 链接&#xff1a;https://pan.baidu.com/s/1Tr94yVFSHn_C6YiJcVprAw 提取…

【C++初阶】string类字符串包不包含‘\0‘

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;C航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1…

Leetcode32 最长有效括号

给你一个只包含 ( 和 ) 的字符串&#xff0c;找出最长有效&#xff08;格式正确且连续&#xff09;括号子串的长度。 代码如下&#xff1a; class Solution {public int longestValidParentheses(String str) {Stack<Integer> s new Stack<>();int res 0;int st…

【可变形卷积3】 DCNv2 安装

使用RTM3D 代码&#xff0c;CenterTrack代码需要用DCN 1、安装DCNv2 &#xff08;1&#xff09;github上最新版的DCNv2源码在"https://github.com/CharlesShang/DCNv2"&#xff0c;但是该版本源码不支持PyTorch1.7&#xff0c;如果使其支持PyTorch1.7需要做以下修改…

ClickHouse(二十二):Clickhouse SQL DML操作及导入导出数据

进入正文前&#xff0c;感谢宝子们订阅专题、点赞、评论、收藏&#xff01;关注IT贫道&#xff0c;获取高质量博客内容&#xff01; &#x1f3e1;个人主页&#xff1a;含各种IT体系技术&#xff0c;IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客 &…

JLSX 模版指令导出Excel

1. 官方相关链接 官网&#xff1a;https://jxls.sourceforge.net/reference/if_command.html JxlsAPI&#xff1a; https://jxls.sourceforge.net/javadoc/jxls/index.html Jxls POI&#xff1a; https://jxls.sourceforge.net/javadoc/jxls/index.html Jxls JExcel&#xff1…

cesium学习记录09-turf.js的使用(画矩形结合地形生成三角网)

上一篇是绘制多边形&#xff0c;这一篇来说绘制矩形&#xff0c;但又因为只说绘制矩形太短了&#xff0c;所以就结合一下turf.js&#xff0c;生成一下地形三角网 Turf.js中文网 最终效果&#xff1a; 一、引入Turf.js 1&#xff0c;下载 npm install turf/turf2&#xff0c;…