Zee

勤于学习,乐于分享

Redis源码剖析--有序集合t_zset

今天来剖析一个比较有意思的数据类型—— 有序集合zset,说实话,它的源码真的是多,而且繁琐,不过,其中的一部分在Redis源码剖析–跳跃表zskiplist中分析过了。有序集合到底是什么呢?有序集合里面存放的元素都自带一个分值,根据这个分值来对元素进行排序,从而使其成为一个有序的集合。接下来,..


Mac下安装Redis以及配置python的Redis库

之前由于是学习Redis的源码风格,一直都没有对它进行较多的使用和实践,以至于源码分析的过程中,总是会带来一些疑惑和不解。于是,结合最近学得python,打算用python和redis来干点什么,虽然说现在还不知道这个「什么」究竟是什么。但是,工欲善其事必先利其器,先把它安装好,跑起来再说吧。 ..


Redis源码剖析--哈希t_hash

不知不觉,从第一篇写Redis源码分析开始,已经过了快一个月了,想想自己的进度,简直慢的吓人啊,这样下去不行,后面得加快脚步了。今天分析的是Redis的又一个数据类型—哈希,哈希键的底层编码形式有OBJ_ENCODING_ZIPLIST和OBJ_ENCODING_HT两种,其中,前者的底层数据结..


Redis源码剖析--集合t_set

今天来看看Redis的另一个数据类型—集合set。在RedisObject一篇中,有介绍到集合对象的底层有两种编码形式,分别是OBJ_ENCODING_INTSET(底层数据结构为整数集合)和OBJ_ENCODING_HT(底层数据结构为字典),如果对整数集合Intset和字典dict不熟悉的,..


Redis源码剖析--列表t_list

上一篇博客Redis源码剖析–快速列表 带大家一起剖析了quicklist这个底层数据结构的实现原理。Redis对外开放的列表list结构就是采用quicklist作为底层实现(在新版本的Redis源码中,不再采用ziplist和sdlist两种结构,而是统一采用quicklist)。有关列表键..


Redis源码剖析--快速列表quicklist

在RedisObject这一篇博客中,有介绍到list结构的底层编码类型有OBJ_ENCODING_QUICKLIST,当时就发现这个底层数据结构被我遗漏了。昨天花了点时间补了补这个知识,看完发现这货就跟STL中的deque的思想一样,顿时觉得又是一个实现超级繁琐但很实用的数据结构。今天就带大家..


Redis源码剖析--字符串t_string

前面一直在分析Redis的底层数据结构,Redis利用这些底层结构设计了它面向用户可见的五种数据结构,字符串、哈希,链表,集合和有序集合,然后用redisObject对这五种结构进行了封装。从这篇博客开始,带你一点点分析五种数据类型常见命令对应的源码实现,慢慢地解开Redis的面纱。 字符串概..


Redis源码剖析--对象object

前面一系列的博客分析了Redis的基本数据结构,有动态字符串sds、双端链表sdlist、字典dict、跳跃表skiplist、整数集合intset和压缩列表ziplist等,这些数据结构对于用户来说是不可见的。 Redis在这些数据结构的基础上构建了对用户可见的五种类型,分别是string、h..


Redis源码剖析--压缩列表ziplist

压缩列表(ziplist)是由 一系列特殊编码的内存块构成的列表,其是Redis的列表建和哈希键的底层实现之一。和整数集合一样,二者都是为Redis节省内存而开发的数据结构。 ziplist可以用来存放字符串或者整数,其存储数据的特点是:比较小的整数或比较短的字符串。Redis的列表建,哈希键,..


Redis源码剖析--整数集合Intset

本系列博客文章已经分析了Redis的大部分数据结构,包括动态字符串,双端链表,字典,跳跃表等,这些数据结构都非常强大实用,但是在内存消耗方面也非常“巨大”。Redis的数据都是存放在内存上面的,所以对内存的使用要求及其苛刻,Redis会想方设法的来节省内存。 假设有一组集合\(\{1,2,3,..