自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 redis 源码系列(5):能省一点是一点 --- intset

整数是计算机程序打交道最多的数据类型之一,对整数集合的存储和检索,往往会对程序的性能有至关重要的影响。 redis 中用 zset 数据结构来处理整数集合(去重),并使用了一定的手段来优化器内存占用,同时又可以以 O(logN) 的时间复杂度来查找数据(ziplist 是 O(N)),而且可以以 O(1) 时间复杂度索引 set 内的某个位置的值。但是因为其底层存储是一个数组,所以插入和删除的时间...

2019-12-31 00:15:17 175

原创 redis 源码系列(4):通用双向链表 --- list

今天我们来学习一下 redis 中 通用双向链表 list 的实现,涉及到的代码有 src/adlist.h src/adlist.c 首先来看一下主要结构体的定义,有 node,iterator、list 三个 typedef struct listNode { // 前置节点 struct listNode *prev; // 后置节点 struct list...

2019-12-27 21:33:20 160

原创 redis 源码系列(3):最不像链表的链表 --- ziplist

本文讲解 redis 中的 ziplist 数据结构。涉及到的代码文件有 src/ziplist.c src/ziplist.h 关于 ziplist 的实现,源代码中作者添加了非常详细明了的注释,这些注释会成为我们后面学习这份代码的臂助。 what /* *The ziplist is a special encoded dually linked list that is designed ...

2019-12-27 00:22:41 165

原创 redis 源码系列(2):一看就懂的 string 实现 --- sds

操纵字符串(string)对于大多数的程序,都是一项主要工作。但是 c 语言中没有内置 string 类型,所以 redis 封装了自己的 string 类型 sds。今天我们就看一下 redis 中的 string 是如何实现的。 其对应的代码在 src/sds.h 和 src/sds.c 中。 柔性数组 在分析 redis 的字符串实现前,我们先岔开话题聊一下柔性数组。 柔性数组或者叫做 Ar...

2019-12-24 13:00:59 171

原创 redis 源码系列(1):船新的渐进式 hash 表 --- dict

今天我们来分析一下 redis 中的 dict(hashtable)的实现原理 redis dict 首先来看几个重要的结构体定义 // hash table entry typedef struct dictEntry { void *key; union { void *val; uint64_t u64; int64_t s64; } v; // red...

2019-12-23 15:47:00 169

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除