随笔分类 - Redis
《Redis的设计与实现》
摘要:9.1:服务器中的数据库 Redis服务器将所有的数据库都保存在服务器状态 redis.h/redisServer 结构的db数组中,db数组的每个项都是一个 redis.h/redisDb 结构,每个redisDb结构都是一个数据库: 在初始化数据库时,程序会根据服务器状态的dbnum属性来决定应
阅读全文
摘要:Redis主要数据结构:SDS、双端链表、字典、压缩列表、整数集合等等。 Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这 5 种类型的对象。每种对象都至少用到了上述所说的数据结构。
阅读全文
摘要:压缩列表(ziplist)是列表键和哈希键的底层实现之一。 当一个列表键只包含少量列表项,并且每个列表项要么就是小得整数值,或者是长度表较短的字符串,那么Redis就会使用压缩列表来做列表键的底层实现。 当一个哈希键只包含少量键值对,并且每个键值对的键和值要么是小得整数值,或者是长度表较短的字符串,
阅读全文
摘要:整数集合(intset)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的数量不多时,Redis就会使用整数集合作为集合键的底层实现。 整数集合的实现: 整数集合(intset)是用于保存整数值的集合抽象数据结构,它可以保存类型int16_t、int32_t或者int64_t的整数值
阅读全文
摘要:跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持多个指向其它节点的指针,从而达到快速访问节点的目的。 跳跃表支持O(logN)、最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批量处理节点。 大部分情况下,跳跃表的效率可以和平衡树相媲美,并且因为跳跃表的实现比平衡树来的更为简
阅读全文
摘要:Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组),而是自己构建了一种名为简单动态字符串(SDS)的抽象类型,并将SDS用作Redis的默认字符串表示。 Redis不是不用C字符串,而是只是会用到i一些无需对字符串值进行修改的地方,例如,打印日志: rediLog("REDIS_
阅读全文
摘要:在Redis数据库里面,包含字符串值的键值对在底层都是由SDS实现的; 列表键的底层实现之一就是链表; Redis的数据库就是使用字典来作为底层实现的,对数据库的增、删、查、改操作也是构建在对字典的操作之上的。 字典还是哈希键的底层实现之一。 Redis的字典使用哈希表作为底层实现,一个哈希表里面可
阅读全文

浙公网安备 33010602011771号