Redis
飞翔的滑稽
这个作者很懒,什么都没留下…
展开
-
Redis(1)——底层数据结构 —— SDS(简单动态字符串)
SDS 全称为 simple dynamic string,简单动态字符串 1. SDS 的用处 SDS 在 Redis 中大致有四种用处 Redis 的 key-value 键值对中的键 Redis 的 key-vlaue 中的 value 类型为 String 的 value AOF 缓冲区 客户端状态中的输入缓冲区 2. SDS 的 c 语言定义 每个 sds.h/sdshdr 结构...原创 2019-06-02 11:11:08 · 187 阅读 · 0 评论 -
Redis(2) —— 底层数据结构 —— 链表
当一个列表键(key-value 中的 value 为 list)包含了数量较多的元素,又或者列表中包含的元素都是比较长的字符串时,Redis 就会使用 链表作为列表键的底层实现 1. 链表的用处 某些情况下用作列表键 客户端输出缓冲区 2. 链表和链表节点的实现 每个链表节点使用了一个 adlist.h/listNode 结构来表示 typedef struct listNode{ ...原创 2019-06-02 12:24:53 · 121 阅读 · 0 评论 -
Redis(3) —— 底层数据结构 —— 字典
字段是以 key-value 形式来存储数据的,c 语言中没有字典的数据结构,所以 Redis 构建了自己的字典实现 1. Redis 字典的用处 Redis 数据库就是以字典来存储数据 Redis 的散列表(哈希键) 使用字典来实现的 2. 字典的实现 哈希表的实现 Redis 字典所使用的哈希表由 dict.h/dictht 结构定义 typedf struct dictht{ ...原创 2019-06-02 15:26:08 · 160 阅读 · 0 评论 -
Redis(4) —— 底层数据结构 —— skiplist(跳跃表)
如果一个有序集合包含的元素数量比较多,又或者有序集合中元素的成员(menber)是比较长的字符串时,Redis 就会使用 skiplist(跳跃表)来作为集合的底层实现 1. 跳跃表的用途 有序集合键(zset) 集群节点中用作内部数据结构 2. 跳跃表的特点 每个节点中存在多个指向其它节点的指针,以达到快速访问 平均 O(logn) 最坏 O(n) 复杂度的节点查询 效率和平衡树相...原创 2019-06-02 16:07:03 · 257 阅读 · 0 评论 -
Redis(5) —— 底层数据结构 —— intset(整数集合)
整数集合(intset)是集合键的底层实现之一,当一个集合只包含数值元素,并且这个集合的元素数量不多时,Redis 就会使用整数集合作为集合键的底层实现之一 1. 整数集合的作用 集合键的底层实现之一(集合元素数量少,且全为整数) 2.整数集合的实现 整数集合(intset)是 Redis 用于保存整数值的集合抽象数据结构,它可以保存类型为 int16_t, int32_t 或者 in...原创 2019-06-02 19:22:03 · 188 阅读 · 0 评论 -
Redis(6) —— 底层数据结构 —— ziplist(压缩列表)
压缩列表是列表键和哈希键的底层实现之一 1. 压缩列表的用处 当一个列表键只包含少量列表项,且每个列表项是小整数值或短字符串,那么 Redis 就是用压缩列表来作为列表的底层实现。 当一个哈希键只包含少量键值对,并且每个键值对的键和值是小整数值或短字符串,那么 Redis 就会使用压缩列表来作为哈希键的底层实现。 2. 压缩列表的构成 压缩列表是由一系列特殊编码的连续内存块组成的顺序性...原创 2019-06-03 08:17:09 · 239 阅读 · 0 评论 -
Redis(8)—— Redis的服务器端
redis 服务器端默认保存着 16 个数据库,客户端可以通过 SELECT (0~15)来选择不同的服务器。 1. 服务器中的数据库结构 Redis 服务器将所有数据库都保存在服务器状态 redis.h/redisServer 结构的 db 数组中, db 数组每一项都是一个 redis.h/redisDB 结构,每个 redisDB 结构代表一个数据库 struct redisServer...原创 2019-06-14 11:52:15 · 109 阅读 · 0 评论 -
Redis(7) —— Redis 中的五大对象
Redis 中存在五种底层的数据结构:简单动态字符串(SDS)、双端链表、字段、压缩列表、整数集合 Redis 中由五种基本对象:字符串对象、列表对象、哈希对象、集合对象和有序集合对象 Redis 中的基本对象的回收基于引用计数法 1. 对象的类型和编码 Redis 中的对象都是由 RedisObject 结构表示,该结构保存着三个属性:type 属性、encoding 属性 和 ptr 属性...原创 2019-06-10 09:23:29 · 238 阅读 · 0 评论