首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
课程
专栏·文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
发薄积厚
门头沟学院 电子信息类
发布于北京
关注
已关注
取消关注
@每天两题神清气爽:
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
全部评论
推荐
最新
楼层
网易互娱
校招火热招聘中
官网直投
相关推荐
数字马力谁去
05-13 16:02
湖南师范大学 电子信息类
数字马力不当人?
据我了解,数字马力校招HC已经几乎没有了,然而,招聘上全是它们的招聘信息,不知为什么,难道是为了打个广告,提高知名度吗,第二,我投递的时候是在三月,笔试的时候是在四月,面试的时候是在五月,再来讲讲面试时候的经历吧,首先面试官并不会让你做自我介绍,根本不想对你有任何了解,直接开局问你做了什么项目,实习干了什么,面试时候的态度更是嘲讽,一个一边面,一直笑,旁边还有个人,回答完,就哈哈哈的大笑,嘲笑无余,搞不懂,一个外包,也不是蚂蚁的正式员工,这么讽刺,不知道还有多强呢,然后转手给你挂掉,不知有什么意义
点赞
评论
收藏
转发
All_is_Well_
05-16 23:57
门头沟学院 电子信息类
牛油们来看乐子
楼主bg双非本硕,无实习经验,简历上是烂大街项目,java后端暑期实习从3月中旬开始投递,基本上能投的都投了美团,阿里国际一面挂盒马二面挂腾讯3进3出,只有一次进了二面58面完泡池子现在只有两个小厂日常offer大伙觉得以楼主的bg,面试机会算多吗,如果算多的话挂的原因是学历实习不占优势还是可能楼主面试表现不好呢大伙畅所欲言
投递美团等公司10个岗位 >
实习,投递多份简历没人回复怎么办
找实习多的是你不知道的事
点赞
评论
收藏
转发
牛牛不怕困难灬
04-18 15:09
广东白云学院 计算机类
比一本多两本
想找个暑假实习工作,求友友们狠狠拷打给点意见 #后端实习# #Java暑期实习# #正在实习的碎碎念#
正在实习的碎碎念
点赞
评论
收藏
转发
No_Game_No_Life
03-31 00:57
已编辑
湖南大学 计算机类
阿里云暑期实习简历投递
室友的简历颠勺他其实一面过了,面试官现场说的没问题会安排二面,但是隔两天还是被挂了。看其他贴子的说法,可能是HR给挂了。然后就开始被捞、挂简历的循环了。😂 #阿里云# #简历挂# #阿里云暑期实习#
投递阿里云等公司10个岗位
点赞
评论
收藏
转发
牛客952278
05-14 10:24
上海交通大学 计算机类
25届都还有谁在找实习
25届都还有谁在找实习??双9基本颗粒无收,准备看中小厂机会
点赞
评论
收藏
转发
点赞
收藏
评论
分享
回复帖子
全站热榜
1
...
盲审已过,答辩已过,工作已签
3.1W
2
...
聪明人看的Java后端入门路线(应该比大多数高手给的靠谱)
9181
3
...
【有奖活动】浅聊一下我的实习⭐
8965
4
...
实习难求——做个总结
8749
5
...
pcg qq 一面
8118
6
...
腾讯一面凉经 5.16
6271
7
...
25届暑期实习中后期更容易拿offer
5274
8
...
26届菜鸡投了一个月大厂日常,0面试绷不住了呀。听说9月后机会可能会多起来,感觉要被迫继续沉淀了之前和导师聊,说找到大厂实习的话可以去,对就业帮助大,小厂的话就emmm投了快一个月,老板上打招呼绝大数
4682
9
...
菜鸟一面 无项目 无手撕 1hour
2909
10
...
求各位大佬给个建议吧
2558
正在热议
#
牛客帮帮团来啦!有问必答
#
777219次浏览
12192人参与
#
机械制造薪资爆料
#
313787次浏览
3617人参与
#
海康威视求职进展汇总
#
97496次浏览
1175人参与
#
毕业租房也有小确幸
#
26711次浏览
1477人参与
#
夸夸我的求职搭子
#
65970次浏览
808人参与
#
荣耀求职进展汇总
#
67947次浏览
681人参与
#
宁德时代求职进展汇总
#
36351次浏览
401人参与
#
你的工作大概什么时候入职?
#
4235次浏览
52人参与
#
简历无回复,你会继续海投还是优化再投?
#
22425次浏览
316人参与
#
非技术岗是怎么找实习的
#
77044次浏览
1430人参与
#
打工人的辛酸
#
8968次浏览
146人参与
#
实习生应该准时下班吗
#
79514次浏览
587人参与
#
本周投递记录
#
202052次浏览
5126人参与
#
投递实习岗位前的准备
#
619003次浏览
11034人参与
#
找工作中的意难平
#
194232次浏览
3441人参与
#
产品实习,你更倾向大公司or小公司
#
38537次浏览
594人参与
#
谈薪时HR压价该怎么应对
#
38062次浏览
260人参与
#
Offer比较,你最看重什么?
#
52529次浏览
502人参与
#
如何写一份好简历
#
270055次浏览
4041人参与
#
学历对求职的影响
#
138650次浏览
1578人参与
牛客网
牛客企业服务