redis
文章平均质量分 84
redis面经
Golang服务端工程师
服务端工程师
展开
-
【面试】Redis底层数据结构——SkipList跳跃表
SkipList跳跃表 有序的数据结构,通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。 平均时间复杂度:O(logN)O(logN)O(logN) 底层无索引的链表: 带索引,如果需要找中间的某个节点,比如寻找 42 ,过程大概是这样的: 数据结构 哈希表结构 作为字典的底层实现 typedef struct zskiplist { struct zskipl...原创 2020-05-06 17:31:30 · 3152 阅读 · 0 评论 -
【面试】Redis底层数据结构——Dict字典
Dict字典 数据结构 哈希表结构 作为字典的底层实现 typedef struct dictht { // 哈希表数组 dictEntry **table; // 哈希表大小 unsigned long size; // 哈希表大小掩码,用于计算索引值 // 总是等于size-1 unsigned long sizemask; //该哈希表已有的节点数 unsigned lon...原创 2020-05-01 17:23:51 · 4140 阅读 · 0 评论 -
【面试】Redis底层数据结构——ZipList压缩列表
ZipList压缩列表 ziplist是一个经过特殊编码的双向链表,它的设计目标就是为了提高存储效率。ziplist可以用于存储字符串或整数,其中整数是按真正的二进制表示进行编码的,而不是编码成字符串序列。它能以O(1)的时间复杂度在表的两端提供push和pop操作。 数据结构 3.2之前 /* Create a new empty ziplist. */ unsigned char *zipli...原创 2020-04-30 10:58:55 · 3598 阅读 · 0 评论 -
【面试】Redis底层数据结构——SDS动态字符串
SDS简单动态字符串 数据结构 3.2之前 typedef char *sds struct sdschar { // buf[] 中已使用的字节数 int len; // buf[] 中未使用的字节数 int free; // 字符数组,用于实际存储字符串内容 char buf[]; } 3.2之后 对于不同长度的字符串,使用不同的数据结构 /*...原创 2020-04-29 14:20:55 · 4471 阅读 · 0 评论 -
【面试】Redis 基础数据类型以及常见面试问题
String字符串 底层实现方式 SDS 简单动态字符串(raw/embstr) typedef char *sds; struct sdshdr { // 记录buf数据中已使用的字节数目 int len; // 记录buf 剩余的字符长度 int free; // 字符数据,用于存储字符串 大小等于len+free+1,其中多余的1个字节是用来存储'\0'的。...原创 2020-04-29 11:39:09 · 26968 阅读 · 0 评论