01 2023 档案
摘要:在学习数据异步或同步删除之前,你首先需要知道,删除操作实际上是包括了两步子操作。 子操作一:将被淘汰的键值对从哈希表中去除,这里的哈希表既可能是设置了过期 key 的哈希表,也可能是全局哈希表。 子操作二:释放被淘汰键值对所占用的内存空间。 也就是说,如果这两个子操作一起做,那么就是同步删除;如果只
阅读全文
摘要:Redis server 一旦和一个客户端建立连接后,就会在事件驱动框架中注册可读事件,这就对应了客户端的命令请求。而对于整个命令处理的过程来说,我认为主要可以分成四个阶段,它们分别对应了 Redis 源码中的不同函数。这里,我把它们对应的入口函数,也就是它们是从哪个函数开始进行执行的,罗列如下:
阅读全文
摘要:tcmalloc TCMalloc 是 Google 开发的内存分配器,在不少项目中都有使用,例如在 Golang 中就使用了类似的算法进行内存分配。它具有现代化内存分配器的基本特征:对抗内存碎片、在多核处理器能够 scale。据称,它的内存分配速度是 glibc2.3 中实现的 malloc的数倍
阅读全文
摘要:我们可以先整体看一下 linux 的 IO 模型大体有哪些类型。 linux 的 IO 主要可以分为两个大类,而我们今天要介绍的 io_uring 就属于其中的 kernel IO 模型中的 async IO 模式的一种。 作为存储系统的开发者,高带宽和高 IOPS 是我们不断的性能追求,相比于通过
阅读全文