首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
秋招专场
校招火热招聘中
官网直投
相关推荐
牛客452491176号
05-28 19:06
已编辑
南京大学 电子信息类
阿里云HR面
阿里云五月投的,5.20HR面完后一直没消息了,一直显示面试中,是不是凉了?一直显示面试中,好慌啊。。。。我听面试完如果显示等待面试结果才有希望,有没有懂的佬解答一下疑惑?阿里云真是我的耶路撒冷了,好焦虑。。。。。。球球阿里云赏一个offer吧
阿里云HR面92人在聊
点赞
评论
收藏
转发
Hello_WordN
昨天 08:54
嵌入式软件开发
毕业第一课之租房攻略
保姆级租房攻略好多同学刚入社会,经验不足,串串房、甲醛房、高水电? 即将在外工作,准备租房的同学们看过来!!第一次全靠自己租房过程中真的很容易踩雷同学们租房的时候一定要擦亮眼睛,下边是我给大家总结的一些我个人的一些租房经验。1.明确租房需求在租房前,我们需要明确自己的租房需求。包括预算、地理位置、房间类型(合租或整租)等。合理的预算是租房的前提,而地理位置则关系到我们的通勤时间和生活便利度。同时,根据自己的生活习惯和喜好,选择适合自己的房间类型。租房前我们需要根据自己的情况和一些app上的价格进行 房屋筛选。下边是一些租房常用的app,有好有坏,主要是大家自己分辨租房渠道租房软app:安居客/...
校招过来人的经验分享
租房前辈的忠告
点赞
评论
收藏
转发
Ryaninryan
04-07 17:21
产品经理
极氪口头offer被鸽
点赞
评论
收藏
转发
呆呆头
04-10 11:11
已编辑
重庆邮电大学 计算机类
C++求求了。给个实习吧
学校一般。投简历没回应啊。怎么改简历啊。听劝
点赞
评论
收藏
转发
勇敢的斑马在泡澡
05-28 21:55
运维工程师
进入国家电网后的工作生活是怎么样的?
我在国网人资部工作已经有一段时间了,刚开始的时候对公司充满期待,办公环境气派,同事之间和谐相处。看着大家忙碌地工作,我也觉得这份工作并不复杂,心想自己也能胜任(后来才知道人资部竞争激烈,需要工作多年才能进入)。整体来说,公司的工作节奏适中,也有健身打球的活动中心,食堂价格也合理,让我觉得找到了一个上班不累、生活舒适的地方。然而,随着轮岗实习开始,我被分到了变电站值班,距离公司较远,需要专门去公司解决问题,不再能享受公司食堂和健身的便利。住宿条件也变得简陋,开始觉得公司有些不尽人意。工作内容要求守规矩,按部就班完成,虽然不难但繁琐。在工作中磨练心性的同时,我回想起读书时最大的愿望是找到一个轻松的...
投递国家电网等公司6个岗位 >
点赞
评论
收藏
转发
点赞
收藏
评论
分享
回复帖子
提到的真题
返回内容
全站热榜
1
...
毕业第一课之租房攻略
2.7W
2
...
不要去美化那条自己没走过的路
9632
3
...
【奖】这个夏天🍉,和牛牛一起打卡刷题~
7759
4
...
拼多多一面
5887
5
...
为什么都在劝退计算机国企?
4335
6
...
想知道双非的学长学姐都在简历上写什么进大厂了
3966
7
...
Java基础八股(中小厂纯享版)
3608
8
...
5.28校招&实习招聘信息汇总
3175
9
...
不要再外卖点评了
2749
10
...
没有实习秋招怎么说😭
2741
正在热议
#
和牛牛一起刷题打卡
#
6954次浏览
660人参与
#
机械制造薪资爆料
#
344459次浏览
4070人参与
#
牛客帮帮团来啦!有问必答
#
1021697次浏览
15621人参与
#
晒一晒我的offer
#
3686118次浏览
57224人参与
#
通信硬件薪资爆料
#
246837次浏览
2331人参与
#
你收到了团子的OC了吗
#
519907次浏览
6189人参与
#
我想象的工作vs实际工作
#
102663次浏览
1665人参与
#
来选选带哪个offer回家过年
#
188854次浏览
1806人参与
#
现在还是0offer,延毕还是备考
#
402601次浏览
4832人参与
#
腾讯工作体验
#
148687次浏览
1418人参与
#
工作丧失热情的瞬间
#
66859次浏览
802人参与
#
如何看待offer收割机的行为
#
242629次浏览
3431人参与
#
百度工作体验
#
28074次浏览
282人参与
#
担心入职之后被发现很菜怎么办
#
33649次浏览
289人参与
#
如何写一份好简历
#
305593次浏览
4375人参与
#
你的简历改到第几版了
#
325645次浏览
4915人参与
#
23届的你们都什么时候入职?
#
92110次浏览
792人参与
#
市场营销面经
#
7328次浏览
157人参与
#
你觉得机械有必要实习吗
#
11234次浏览
184人参与
#
通信硬件人笔面经互助
#
139229次浏览
2589人参与
牛客网
牛客企业服务