随笔分类 - Redis
摘要:底层:跳跃链表skiplist 跳表 每个node的结构:含键和值,还有一个由多个node组成的list,就是本node在不同层指向下一个node的指针。 每次初始化时初始化最初的节点,也就是最左边的节点,它的高度就是跳表最大高度,初始每个位置指针指向null。 插入元素时首先判断该元素在集合中是否
阅读全文
摘要:底层:快速列表quicklist 在redis早期版本中,list底层使用的是ziplist和linkedlist(元素少时ziplist,多时linkedlist),后来因为链表指针的空间占用大换成了现在的quicklist,quicklist就是两者的混合体,它将linkedlist按段拆分,每
阅读全文
摘要:底层:压缩列表ziplist、intset、紧凑列表listpack ziplist和它的级联更新 ziplist是hash类型和list类型在底层的实现之一。当list中只包含少量元素,且元素要么是小整数要么是短字符串时,此时list底层就采用ziplist的方式存储。当hash只保存少量键值对,
阅读全文
摘要:底层:链表和字典 链表 redis中的list类型有时会采用链表的形式存储。 链表的每一个节点定义如下: typedef struct listNode{ //前置节点 struct listNode *prev; //后置节点 struct listNode *next; //节点的值 void
阅读全文
摘要:底层:字符串 在redis中除了少数用来打印日志信息的字符串,其他字符串都是以SDS的形式存储的,SDS的全称是simple dynamic string。 SDS的定义 SDS的定义如下: struct sdshdr{ //SDS保存的字符串的长度 int len; //buf数组中未使用的字节数
阅读全文
摘要:Redis的基本数据类型 1、String类型 它是二进制安全的,可以存储图片等数据。不会因为特殊字符导致字符串结尾,redis是C语言书写的,C的字符串有这种特点。底层是SDS(simple dynamic string),字符串是动态的,类似arraylist。 底层:SDS(simple dy
阅读全文