
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 · 3239 阅读 · 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 · 4218 阅读 · 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 · 3707 阅读 · 0 评论 -
【面试】Redis底层数据结构——SDS动态字符串
SDS简单动态字符串数据结构3.2之前typedef char *sdsstruct sdschar { // buf[] 中已使用的字节数 int len; // buf[] 中未使用的字节数 int free; // 字符数组,用于实际存储字符串内容 char buf[];}3.2之后对于不同长度的字符串,使用不同的数据结构/*...原创 2020-04-29 14:20:55 · 4567 阅读 · 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 · 27077 阅读 · 0 评论