Redis BigKey问题

news2024/11/28 22:42:37

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

不要使用keys , 使用 scan 命令
scan 0 match "user:
" 10

2.Memory usage命令用过吗

memory usage key [semples count] :计算每个键值对的字节数

3.bigKey 问题,多大算bigKey,如何发现?如何处理?如何删除

string 类型控制在10k以内,hash,list,set,zset元素个数不要超过5k,
反例:一个包含200w个元素的list
非字符串的bigkey,不要使用del删除,使用hscan,sscan,zscan的方式渐进式删除,同时防止bigkey过期自动删除问题,例如一个200w元素的list设置一个小时过期,会触发del操作。会造成阻塞。
del命令是一种同步命令,即它会阻塞客户端,
与del命令不同的是,unlink命令会异步地删除指定的键以及与之相关联的值。即,它会将要删除的键添加到一个待删除的列表中,并立即返回,不会阻塞客户端。Redis服务器会在后台异步地删除待删除列表中的键。

综上:
String :值最大是512M,但超过10kb就是bigkey
list,hash,set和zset:最大个数是40多亿个,但是个数超过5000就是 bigkey

那些危害?
网络阻塞,过期阻塞删除耗时长。

如何产生的?
热销品的收藏量,明星的粉丝逐步增长。

如何排查?
redis-cli --bigkeys
redis-cli --bigkeys -i 0.1
给出每种数据类型 TOP 1的bigkey,同时给出键值个数及平均值。
每隔100条scan命令就会休眠0.1s,ops就不会剧烈抬升,但是扫描时间会变长

如果想查询大于10kb的所有key, --bigkey参数就无能为力了,需要使用 memory usage来计算每个键值的字节数。

如何删除bigkey?
渐进式删除,
string : del 命令 或者 unlink
hash: 使用 hscan每次获取少量的 key-value,再使用hdel删除每个flied.

4.bigKey 如何调优,惰性释放 lazy-free了解吗

reids 默认的过期删除del,阻塞的,如果是一个bigkey,可能需要几秒钟
而 unlink, flushDB async 等是异步非阻塞的
需要在redis.conf 的 lazy-free 向中配置
lazyfree-lazy-server-del no 改为yes
lazyfree-lazy-flush no 改为 yes
lazyfree-lazy-user-del 改为 yes

5.moreKey 问题,生产上有1000w记录,如何遍历?keys* 可以吗

小数据量可以使用key*,为了良好的习惯,建议还是别用。
keys * 也是原子命令,数据大会导致redis长时间锁住及CPU飙升,生产杜绝使用。
比如 100w的数据,一般机器需等待2-3s, 1000w的数据 长则20-30s.
在这么长 时间内,所有其他读写命令都会延后甚至报错,随着命令的积压,可能会造成缓存雪崩,甚至数据库宕机。

那我们如何变流key 呢
使用scan命令!类似mysql的limit
sscan 针对于string, 迭代 集合键中的元素
hscan 针对于 hash,迭代哈希键中的键值对
zscan 针对于 zset,迭代有序集合中的元素(包括元素成员和元素分值)

SCAN cursor [MATCH pattern] [COUNT count]
cursor - 游标。
pattern - 匹配的模式。
count - 指定从数据集里返回多少元素,默认值为 10

在这里插入图片描述
游标从0开始,执行命令后返回下一次游标,知道下一次游标为0.则查询结束。

6.如何生产上限制 keys */flushdb/flushall 等危险命令以防止误删勿用

通过配置禁用这些命令,redis.conf的1066行下的
rename-command这一项中进行配置
rename-command keys “”
rename-command flushdb “”
rename-command flushall “”
或则配置一个极难拼写的字符串 比如
rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52

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

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

相关文章

【Linux】打开Linux大门,踏入Linux世界(环境搭建再加一群Linux基本指令就OK啦~)

🧑‍🎓个人主页:简 料 🏆所属专栏:Linux系统编程与网络编程 🏆个人社区:越努力越幸运社区 🏆简 介:简料简料,简单有料~在校大学生一枚&#x…

论文分享 | 视野约束下多机器人系统的最小持久图生成与编队控制

阿木推出的Prometheus项目校园赞助活动,再次迎来开发者参与! 北京理工大学自动化学院赵欣悦同学,在Prometheus开源仿真架构的基础上进行了二次开发,且使用P450进行了真机实验并发表了相关论文,其论文《视野约束下多机…

前端开发如何速成java,使用java开发网络接口

引言 我是干前端的,闲来没事,也想学学java,下面我会根据我学习java的经历来整理出java的速成之路。 学习路线 按照数字的顺序学下去就行了 1.学习java基础教程:主要听 class和集合这两部分吧,这两个部分非常重要&am…

ASEMI代理韩景元可控硅C106M参数,C106M封装,C106M尺寸

编辑-Z 韩景元可控硅C106M参数: 型号:C106M 断态重复峰值电压VDRM:600V 通态电流IT(RMS):4A 通态浪涌电流ITSM:30A 平均栅极功耗PG(AV):0.2W 峰值门功率耗散PGM:1W 工作接点温度Tj&…

【LeetCode】《LeetCode 101》第九章:巧解数学问题

文章目录 9.1 公倍数与公因数9.2 质数204.计数质数(中等) 9.3 数字处理504. 七进制数(简单)172. 阶乘后的零(中等)415. 字符串相加(简单)326. 3 的幂(简单) 9…

mysql语句最大执行时间问题解决,无需改mysql配置

下面是我排错的一个过程: 1、我是ado.net执行一个查询语句报了个错: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. 译:超时已过期。操作完成前经过的超时时间&a…

【Netty】 工作原理详解(十一)

文章目录 前言一、Netty 模型二、代码示例2.1、引入Maven依赖2.2、服务端的管道处理器2.3、服务端主程序2.4、客户端管道处理器2.5、客户端主程序2.6、测试运行 总结 前言 回顾Netty系列文章: Netty 概述(一)Netty 架构设计(二&…

借军工经验开拓消费市场,三星显示收购eMagin浅析

前不久三星显示(Samsung Display)宣布,拟支付2.18亿美元收购微显示方案商eMagin全部普通股,收购完成后eMagin将并入三星显示,以加速XR显示业务发展。 据青亭网了解,eMagin成立于1996年,该公司多…

《Spring Guides系列学习》guide11 - guide15

要想全面快速学习Spring的内容,最好的方法肯定是先去Spring官网去查阅文档,在Spring官网中找到了适合新手了解的官网Guides,一共68篇,打算全部过一遍,能尽量全面的了解Spring框架的每个特性和功能。 接着上篇看过的gu…

JVM调优实战

1、当项目运行一段时间以后,产生了OOM的问题,我们该如何排查问题呢? 用top命令,看看是哪个进程CPU占用率高,获取它的进程ID,再根据具体的进程id,执行 top -HP 进程id号 命令,看看哪个线程的CP…

复制架构,Redis Sentinel分析

存储高可用,一般采用复制架构,复制架构,需要关注故障架构和状态决策2个要点 复制架构通用关注点 数据复制 复制格式 格式优点缺点举例命令数据量小可能存在数据不一致Mysql 的statement同步方式,按commit顺序同步,…

文件系统考古:1974-Unix V7 File System

有时,进步难以察觉,特别是当你正身处其中时。而对比新旧资料之间的差异,寻找那些推动变革的信息源,我们就可以清晰地看到进步的发生。在Linux(以及大部分Unix系统)中,都可以印证这一点。 Unix …

淘宝层级改版,五力模型上线!

最近临近618,淘系又各种功能改版,现在店铺层级也开始陆续改版了。从原来的只需要提升销售金额,到现在的五力模型。我们先说一下原来的店铺层级考核,跟现在的区别主要是哪? 1.原来店铺层级的考核升级特别简单&#xff0…

推荐一款神级编程工具[Cursor]自带gpt而且免费!

今天推荐一款非常好用开发工具,一个智能编程助手。 官网:https://www.cursor.so/ 适用平台:Mac、Windows、Linux。 助手的样子 可以做哪些事情? 编程语言:我可以回答关于各种编程语言(如Python、Java、Ja…

测试老鸟总结,从功能到自动化测试详细整理,测试之路广阔无垠...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Python自动化测试&…

黑客零基础入门教程,从入门到精通学习路线规划,看完这篇就够了

很多人上来就说想学习黑客,但是连方向都没搞清楚就开始学习,最终也只是会无疾而终!黑客是一个大的概念,里面包含了许多方向,不同的方向需要学习的内容也不一样。 想要成为黑客,却苦于没有方向,…

戏曲APP软件开发需具备哪些功能呢?

戏曲是我国的国粹,传统戏曲文化源远流长,博大精深,数千年以来一直都是深受大众喜欢的文化生活的重要环节。随着时代的推进,娱乐形式更加多样化,传统的剧场演出形式的戏曲传播方式已经跟不上时代发展以及人们的需求了。…

python+Django+vue高校体育足球篮球联赛网站系统

系统主要是以后台管理员管理为主。管理员需要先登录系统然后才可以使用本系统,管理员可以对个人中心、用户管理、赛事信息管理、球队信息管理、球员信息管理、比赛分值板管理、系统管理等进行添加、查询、修改、删除,以保障足球联赛管理系统的正常运行。…

es elasticsearch 十 中文分词器ik分词器 Mysql 热更新词库

目录 中文分词器ik分词器 介绍 安装 使用分词器 Ik分词器配置文件 Mysql 热更新词库 中文分词器ik分词器 介绍 中文分词器按照中文进行分词,中文应用最广泛的是ik分词器 安装 官网下载对应版本zip 下载 放到 plugins 目录 新建 ik文件夹 考入解析zip 重…

es Elasticsearch 十一 Java api实现 索引管理

目录 Java api实现 索引管理 Pom 测试联通 增加索引 打印结果 异步执行 删除索引 查看索引是否存在 关闭索引 开启索引 Java api实现 索引管理 Pom <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-re…