从源码看Redis —— 关于主动过期那点事

前言

前段时间刷脉脉的时候,刷到了这样一个面试题:为什么大量Key过期的时候,会影响整个redis服务的延迟

如果你是面试者,你会怎么回答?

如果你只知道redis是一个单线程reactor模型,你可能会回答:因为redis是单线程模型,所以是因为处理删除key的事件耗时过长而导致其他事件排队引起延迟增加

这个回答能让面试官满意吗?可能还不够,他也许会继续问你:那redis主动处理过期key的时机是什么时候?处理的逻辑是什么?最坏情况下会增加多少延迟?如何判断是因为过期key而导致的延迟抖动?如何解决这个问题?

同样的,当时看到脉脉帖子上的回答,我也觉得不够完整,所以索性带着这些问题翻了下redis的源码。

ROG Zephyrus G14 Manjaro-KDE 初步安装体验

起因

之前我主力的开发环境还是在Windows下,需要Linux的部分一般使用WSL来完成,最近闲来无事,打算给笔记本装个Linux玩玩。关于发行版的选择,几经考虑还是选择了相对来说比较火的Manjaro,一来既然是折腾,还是打算选择一个滚动发现版的系统,最后取舍之下就选了Manjaro,至于为什么是KDE,大概是因为之前也用过GNOME,打算换个口味。😊

修正monkey补丁在windows下失败的问题

起因

公司内正在做的一个项目最近正在写接口集成测试的脚本,但是由于项目内部分代码使用了全局单例,这部分很难进行mock测试,虽然通过gomonkey可以进行一定程度的patch,但是由于gomonkey当前是非协程安全的,也就是没办法做并行的测试,然而我们的项目用例很多,如果进行串行测试,整个CI流程走下来要接近10分钟,这会非常影响开发的效率,故我开始寻求解决方案。

程序优化随笔

前言

过早优化是万恶之源
文本只是提供一些优化可能性
本文目前还只是个草稿雏形,待后续补充