首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
牛客184652029号
门头沟学院 C++
发布于四川
关注
已关注
取消关注
@每天两题神清气爽:
Redis 大 key 要如何处理?
面试官:Redis 大 key 要如何处理?一般来说,下面两种情况被称为大keyString类型的值大于10KBHash、List、Set、ZSet类型的元素个数超过5000个大Key会造成以下问题:客户端超时阻塞:由于Redis执行命令是单线程处理,然后在操作大key时会比较耗时,阻塞其他命令的执行引发网络阻塞:每次获取大key产生的网络流量较大,如果一个key的大小是1MB,每次访问量是1000,那么每秒会产生1000MB的流量,这对普通千兆网卡的服务器是灾难性的阻塞工作线程:如果使用del删除大key时,会阻塞工作线程,这样没法处理后续命令内存分布不均,集群模型在slot分片均匀情况下,会出现数据和查询倾斜情况,部分有大key的Redis节点占用内存多,QPS也会比较大。怎么找到大key呢?通过 redis-cli --bigkeys 命令查找大key:最好在从节点或者业务低峰阶段进行扫描查询,以免影响实例正常运行该方法也存在不足,只能返回每种类型中最大的那个Key,且对于集合类型来说只统计集合元素个数多少而非实际占用的内存。 redis-cli -h 127.0.0.1 -p6379 -a "password" -- bigkeys使用 scan 命令查找大Key使用scan命令对数据库扫描,然后用type命令获取返回的每一个key的类型。对于String类型,可以直接使用strlen命令获取字符串的长度,也就是占用的空间字节数对于集合类型来说,有两种方法可以获得它占用的内存大小:如果能够预先从业务层知道集合元素的平均大小,那么可以使用下面的命令获取集合元素的个数,然后乘以集合元素的平均大小,这样就可获得集合占用的内存大小了。List类型:`LLEN`;Hash 类型:`HLEN` ;Set 类型:`SCARD` ;Set 类型:`SCARD`。如果不能提前知道写入集合元素大小,可以使用 memory usage命令,查询一个键值对占用的内存空间。使用RdbTools工具查找大keyRdbTools第三方开源工具可以用来解析Redis的RDB文件,找到其中的大key。比如下面这条命令,将大于10Kb的Key输出到一个表格文件rdb dump.rdb -c memory --bytes 10240 -f redis.csv如何删除大Key呢?删除操作的本质是要释放键值对占用的内存空间。释放内存后为了更加高效的管理内存空间,操作系统需要把释放掉的内存块插入一个空闲内存块的链表,以便后续进行管理和再分配,这个过程本身需要一定时间,而且会阻塞当前释放内存的应用程序。所以如果一下子释放了大量内存,空闲地址块链表操作时间就会增加,相应的就会造成redis主线程的阻塞。主线程阻塞,其他所有请求都可能会超时,超时越来越多,会造成redis连接耗尽,产生各种异常。因此删除一个大key,要小心。分批次删除。对于删除大Hash,使用hscan命令,每次获取100个字段,再用hdel命令,每次删除1个字段。对于删除大List,通过ltrim命令,每次删除少量元素对于删除大 Set,使用 sscan 命令,每次扫描集合中 100 个元素,再用 srem 命令每次删除一个键。对于删除大 ZSet,使用 zremrangebyrank 命令,每次删除 top 100个元素。异步删除Redis4.0开始,可以采用异步删除法,用unlink命令代替del来删除。这样Redis会将这个key放入到一个异步线层中进程删除,不会阻塞主线程。
点赞 11
评论 4
全部评论
推荐
最新
楼层
还没有回复哦~
相关推荐
不愿透露姓名的神秘牛友
03-10 19:37
Manus内测邀请码到底要怎么申请才给?
是我申请的理由不对吗,换了两三个邮箱都没有给感觉需要几十万粉丝量级的大博主才能有内测码
点赞
评论
收藏
分享
03-11 13:59
已编辑
上海大学 Java
古茗笔试
选择和填空:数据结构,Java,概率题算法:只有一道,连续子数组最大和,经典题,秒了如果对你有用的话,求个花花
查看1道真题和解析
点赞
评论
收藏
分享
03-11 10:06
已编辑
河南师范大学 C++
这是拟录取吗,我只面试了一次3.11昨天收到offer了
牛客163548586号:
牛逼啊王占赢
点赞
评论
收藏
分享
03-01 17:22
重庆理工大学 Python
考研失利,25届想冲春招,帮忙看看简历,欢迎指出需要修改的地方,谢谢大家
沟头学院:
校园经历删了
点赞
评论
收藏
分享
昨天 00:21
陕西师范大学附属中学 Web前端
锐评某下头大厂的惊天魔幻招聘
秋招陆陆续续面了某大厂十几次,但某大厂的hr和它的招聘制度真让人流汗🤪 🤪 🤪 首先当某大厂的hr从通讯录里诈尸般弹出时,会热情的说:我们有hc🤤!同学和我们很匹配!我们的hc数量从∞到0😛接着当你顺利通过三轮技术面和hr面完你就会加入备胎队列:有的hr会直接化身为厉鬼,无论你如何打电话和发微信 ,等待你的只有感谢信有的hr会成为赛博幽灵热情的将你放入审批队列,问就是在审批,苦苦等待几周后,在某一周收到感谢信有的hr直接不演了,说有hc,也觉得你有能力,而且没有其他候选人啦!但一结算 ✋ 🤪 ✋ 哎呀,你得了mvp,不能把你招进来当躺赢狗,我只是骗骗你有hc的不然OKR咋刷?给你审...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
26届腾讯QQ暑期实习后台开发一面面经
6.3W
2
...
双非本+GAP+考研二战,天天走“岔路”的我怎么逆袭?
8875
3
...
字节暑期oc
7355
4
...
网易云音乐-日常实习一二面
6768
5
...
今天mentor和老登在会议室吵起来了!!
6473
6
...
小米java一面
6280
7
...
腾讯pcg面经
6177
8
...
校招末班车 双非上岸985研跨专业拿大厂offer
6036
9
...
lastday,跟mentor表白了
5956
10
...
北漂往事之被房东欺压的那一年
5560
创作者周榜
更多
正在热议
更多
#
打工人的精神状态
#
21468次浏览
333人参与
#
两会劳动法放大招
#
4886次浏览
172人参与
#
腾讯音乐26届实习
#
104348次浏览
627人参与
#
牛友故事会
#
133395次浏览
2265人参与
#
你小时候最想从事什么职业
#
72852次浏览
1369人参与
#
技术岗笔试题求解
#
11375次浏览
98人参与
#
元戎现在香不香
#
61191次浏览
477人参与
#
新凯来求职进展汇总
#
11482次浏览
61人参与
#
携程求职进展汇总
#
170926次浏览
1131人参与
#
实习/项目/竞赛奖项,哪个对找工作更重要?
#
42558次浏览
572人参与
#
签了三方后想毁约怎么办
#
25170次浏览
144人参与
#
2023毕业生求职有问必答
#
147760次浏览
1457人参与
#
东风汽车求职进展汇总
#
11806次浏览
73人参与
#
韶音科技求职进展汇总
#
44193次浏览
465人参与
#
正在春招的你,也参与了去年秋招吗?
#
232680次浏览
2237人参与
#
你投递的公司有几家约面了?
#
47569次浏览
285人参与
#
许愿池
#
249247次浏览
2672人参与
#
听到哪句话就代表面试稳了or挂了?
#
113083次浏览
1022人参与
#
生物制药人求职现状
#
12555次浏览
110人参与
#
秋招想进国企该如何准备
#
43592次浏览
338人参与
#
牛客租房专区
#
43568次浏览
695人参与
#
网易求职进展汇总
#
68932次浏览
533人参与
牛客网
牛客企业服务