
Redis
文章平均质量分 89
飞奔的屎壳郎
WX公众号搜索:达梦课代表
展开
-
redis源码学习-05_字典、哈希表
概述字典, 又称符号表(symbol table)、关联数组(associative array)或者映射(map), 是一种用于保存键值对(key-value pair)的抽象数据结构。在字典中, 一个键(key)可以和一个值(value)进行关联(或者说将键映射为值), 这些关联的键和值就被称为键值对。字典中的每个键都是独一无二的, 程序可以在字典中根据键查找与之关联的值, 或者通过键来更新值, 又或者根据键来删除整个键值对, 等等。结构体字典dict/* * 字典 */typedef原创 2022-05-29 16:03:48 · 239 阅读 · 0 评论 -
redis源码学习-04_链表
概述链表提供了高效的节点重排能力, 以及顺序性的节点访问方式, 并且可以通过增删节点来灵活地调整链表的长度。作为一种常用数据结构, 链表内置在很多高级的编程语言里面, 因为 Redis 使用的 C 语言并没有内置这种数据结构, 所以 Redis 构建了自己的链表实现。链表在 Redis 中的应用非常广泛, 比如列表键的底层实现之一就是链表: 当一个列表键包含了数量比较多的元素, 又或者列表中包含的元素都是比较长的字符串时, Redis 就会使用链表作为列表键的底层实现。结构体/* * 双端链表节原创 2022-05-29 14:58:38 · 144 阅读 · 0 评论 -
redis源码学习-03_动态字符串SDS
概述简单动态字符串(SDS, Simple Dynamic String)是 Redis 底层所使用的的字符串表示(而不是使用传统的 C 字符串)。redis需要的不仅仅是一个字符串变量,而是一个可以被修改的字符串值,我们设置的所有键值基本都是 SDS。SDS结构体typedef char *sds;struct sdshdr { // 记录 buf 数组中已使用字节的数量 // 等于 SDS 所保存字符串的长度 int len;原创 2022-05-29 10:11:43 · 932 阅读 · 0 评论 -
redis源码学习-02_内存分配
redis是一个基于内存的key-value的数据库,其内存管理是非常重要的,为了屏蔽不同平台之间的差异,以及统计内存占用量等,redis对内存分配函数进行了一层封装,程序中统一使用zmalloc,zfree一系列函数,其对应的源码在src/zmalloc.h和src/zmalloc.c两个文件中。在所有申请的指定长度的内存前加了一个sizeof(size_t)的长度(通过一个堆上分配的指针知晓其空间大小)用于记录实际申请的内存长度,方便统计内存使用占用和内存使用状态分析相关概念屏蔽底层平.原创 2022-05-28 20:58:53 · 340 阅读 · 0 评论 -
redis源码学习-01_Clion中调试redis源码
cygwin搭建Cygwin只是提供了类似于Linux的环境,实际使用上还是有一些差异的。不过已经能满足我们基本的需求。下载官网地址:https://cygwin.com/install.html安装选择默认选择安装目录,点击下一步;选择“direct connection(直接连接)“;如果你有用代理,请选择对应的设置;4.选择在线下载安装的镜像站,修改成国内的镜像源:http://mirrors.163.com/cygwin/在这一步,选择需要安装的包;安装原创 2022-05-28 20:43:53 · 509 阅读 · 0 评论