网站首页 > java教程 正文
技术好文每日一读。
技术文章多如牛毛,树哥帮你精挑细选。今天想和大家分享的一篇文章来自于滴滴技术的公众号。为什么reds内部使用不同编码?这篇文章从一个线上慢查询请求的报警入手,结合现象逐步分析排查,最终定位到redis对象内部。不同编码的查询时间复杂度差异由现象到本质,介绍了基础知识背景和背后的底层原理以及不同编码在查询数据上的时间复杂度区别。
接下来我为大家做了一个简单的总结。文章主要分为三个部分。
·第一部分介绍案发现场和基本现象。首先引入了一个现场慢查询的报警,在这个时候也发现redis集群内部有部分实例出现了cpu使用率上升的问题,慢查询也集中在这几个实例中。
在结合业务判断是少量的热k访问导致了部分redis实例负在变高,继而开始排查从故障期间的线上入手。线索如下:发现出问题的实例a中这几个热k是哈士数据结构里面存储的每个k都有四百多个元素,与此同时同样的业务逻辑。另外一个实例b中也存在类似的热k且qps比故障实例还要高,每个k的元素比故障实例也要多,但是却没有出现耗时高的问题。
·第三个现象就是热k上大部分命令都是h exists,出问题的热k内部编码是see pleased,没出问题的实例中内部编码是哈士table,由此猜测可能是由于编码不同引起的慢查询。
文章第二部分主要介绍redis编码的基础知识和不同编码之间的差异。首先介绍一下哈士对象的两种内部编码和差异以及两种编码方式数据结构,然后从命令执行入手介绍了对两种编码结构的处理逻辑。在介绍完这些背景知识以后开始比较两种编码的查询时间复杂度,由此猜测是由于时间复杂度的差异导致了a中的慢查询。
接下来就给了一波测试方案进行验证,从测试结果来看cpu的使用率和耗时还是相差比较大的。
·最后第三部分给出了一波优化思路,主要有三个方面。
→第一个就是release服务端的优化调整配置项,从而控制zip list的元素数量相对较少。
→第二点就是业务侧的优化方式针对单个的k做一个优化。
→第三部分是业务上的优化就避免落t。
整体上这篇文章从一个线上报警入手,然后从背景知识和底层实现去解释了一下造成这个现象的原因,个人感觉还是比较有收获的。
今天的视频就到这里,让我们下期再见。
猜你喜欢
- 2024-10-10 [职场] 面试自我介绍怎么办(面试自我介绍时怎么说)
- 2024-10-10 【面试模板】自我介绍的模板和示例(收藏)
- 2024-10-10 【2024全栈版】Java面试八股文,刷完你也可以当架构师!
- 2024-10-10 Java面试整理-JavaSE(2)(java面试数据查找)
- 2024-10-10 终于约到JAVA面试了#日常vlog(java面试提前到还是准时)
- 2024-10-10 当众面试,自我介绍要令人心动(当面自我介绍怎么说)
- 2024-10-10 Java程序员,面试题汇总(java程序员面试笔试真题库)
- 2024-10-10 一个Java程序员如果打算面试Go语言的职位,应该知道的
- 2024-10-10 第一次面试13-14的java开发#应届生
- 2024-10-10 一开口就拿捏面试官的自我介绍】“请做一个自我介绍”
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)