Redis的设计与实现-总结

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 个人真的很喜欢这本书, 从对C语言一窍不通, 到发现C语言竟然如此简洁, 以至于我喜欢上了C! 整体的感悟吧, 觉得 Redis 的作者, 对每一块内存非常吝啬……

个人真的很喜欢这本书, 从对C语言一窍不通, 到发现C语言竟然如此简洁, 以至于我喜欢上了C! 对此前面的底层数据结构也读了几次, 大致整理了书里的内容, 后面的就粗略看了一下, 不再细细整理了.

Redis的设计与实现(1)-SDS简单动态字符串

Redis的设计与实现(2)-链表

Redis的设计与实现(3)-字典

Redis的设计与实现(4)-跳跃表

Redis的设计与实现(5)-整数集合

Redis的设计与实现(6)-压缩列表

整体的感悟吧, 觉得 Redis 的作者, 对每一块内存非常吝啬, 为了节省内存而制造出各种各样的编码和技巧. 阅读源码的过程中, 也学习到了宏的技巧, 比如说:

#define ZIP_ENTRY_ENCODING(ptr, encoding) do {  \
    (encoding) = (ptr[0]); \
    if ((encoding) < ZIP_STR_MASK) (encoding) &= ZIP_STR_MASK; \
} while(0)

大量的使用 do { ... } while(0) , 上网找过, 说这样写宏展开后就不会编译错误, 当然道理是浅显易懂的. 有些函数, 比如上面的 ZIP_ENTRY_ENCODING , 如果写成真真正正的函数, 会增加函数调用栈的开销, 听说 << C 和指针 >> 这本书会提及, 准备有时间好好看看.

源码的注释版, 真的很好, Redis的代码读起来也还是比较亲切. 工作上, 曾经排查线上 Nginx 的 bug , 准确来说, 应该是 API 网关 kong, 它结合了 OpenResty, 关于 URL 字符串的编码问题, 具体的记不清了, 但里面对字符串的 URL 编码, 用的是查表法和位运算, 这样的转换函数真的是晦涩难懂. 水平真的有限, 我也是请教了同事, 他在 DevCPP 里面逐行调试才知道的.


这本书的后面几部分, 最开始是几个底层数据结构, 然后是对象, 第二部分是单机数据库, 包括 RDB 持久化 和 AOF 持久化, 事件, 客户端和服务端; 第三部分是多机数据库的实现, Redis 集群等, 这一块我还没实践过; 第四部分是比较杂的功能, 包含了发布订阅, 事务, Lua 脚本, 慢日志以及一些命令的实现. 可能也得之后有时间再刷刷看了.

明确一下目标: 很喜欢C语言, 准备找时间看看 << C 和指针 >>, 然后买本轮子哥一直推的 << C++ Primer 5 >> , 越来越发现底层的世界, 真的是很好玩啊! 特别是, 对于每一块内存, 随心所欲的控制, 这种感觉真的是爽爆了!!!


文章来源于本人博客,发布于 2018-06-02,原文链接:https://imlht.com/archives/145/

目录
相关文章
IDEA整合SpringBoot项目的简单搭建
IDEA整合SpringBoot项目的简单搭建
148 9
IDEA整合SpringBoot项目的简单搭建
|
数据采集 编解码 监控
网站性能指标设计详解
网站性能指标设计详解
520 0
网站性能指标设计详解
|
Linux 开发工具
Linux设置服务自启动
Linux设置服务自启动
273 0
|
测试技术
章11 易用性测试
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/1505758  章11 易用性测试 易用性(Useability)是交互的适应性、功能性和有效性的集中体现。
894 0
|
10天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1208 5
|
9天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1167 87
|
7天前
|
机器学习/深度学习 物联网
Wan2.2再次开源数字人:Animate-14B!一键实现电影角色替换和动作驱动
今天,通义万相的视频生成模型又又又开源了!Wan2.2系列模型家族新增数字人成员Wan2.2-Animate-14B。
646 11

热门文章

最新文章