Redis笔记
文章平均质量分 55
读书笔记
爱在凌晨
闲时,看云卷云舒 :-)
展开
-
Redis之对象
Redis没有直接使用之前提到过的数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象。对象的类型与编码redisObject数据结构通过encoding属性来设定对象所使用的编码,而不是为特定类型的对象关联一种固定的编码,极大地提升了Redis的灵活性和效率,因为Redis可以根据不同的使用场景来为一个对象设置不同的编码,从而优化对象在某一场景下的效率typedef st...原创 2022-02-18 13:10:17 · 318 阅读 · 0 评论 -
Redis数据结构之压缩列表(ziplist)
压缩列表( ziplist) 是列表键和晗希键的底层实现之一。当一个列表键只包含少量 列表项,并且每个列表项要么就是小整数值,要么就是长度比较短的字符串,那么 Redis 就 会使用压缩列表来做列表键的底层实现。压缩列表是 Redis 为了节约内存而开发的,是由一系列特殊编码的连续内存块组成的顺序型数据结构。一个压缩列表可以包含任意多个节点,每个节点可以 保存一个字节数组或者一个整数值。数据结构压缩列表结构zlbytes zltail zllen entry1 endtry2 ... ent原创 2022-02-17 18:08:52 · 657 阅读 · 0 评论 -
Redis数据结构之整数集合(intset)
整数集合( intset) 是集合键的底层实现之一,当一个集合只包含整数值元素,并且这 个集合的元素数量不多时, Redis 就会使用整数集合作为集合键的底层实现。整数集合 (intset) 是 Redis 用于保存整数值的集合抽象数据结构,它可以保存类型为int16 、int32 或者 int64 的整数值,并且保证集合中不会出现重复元素。数据结构typedef struct intset { //编码方式 uint32_t encoding; //集合元素数量原创 2022-02-14 09:34:42 · 365 阅读 · 0 评论 -
Redis数据结构之跳跃表
跳跃表是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。跳跃表支持平均 0(logn)、最坏 O(n)的复杂度的节点查找,还可以通过顺序性操作来批量处理节点。在大部分情况下,跳跃表的效率可以和平衡树相媲美,井且因为跳跃表的实现比平衡树要来得更为简单,所以有不少程序都使用跳跃表来代替平衡树。一个有序集合包含的元素数量比较多,或者有序集合中元素的成员是比较长的字符串时,Redis就会使用跳跃表来作为有序集合键的底层实现。数据结构typedef .原创 2022-02-10 18:32:13 · 613 阅读 · 0 评论 -
Redis数据结构之字典
字典是一种用于保存键值对( key-value pair )的抽象数据结构。Redis的字典使用哈希表作为底层实现,一个哈希表里面可以有多个哈希表节点,而每个哈希表节点就保存了字典中的一个键值对数据结构哈希表数据节点typedef struct dictEntry { //键值对的key void *key; //键值对的value union { void *val; uint64_t u64; int64_原创 2022-01-27 14:22:22 · 1272 阅读 · 0 评论 -
Redis数据结构之链表
链表提供了高效的节点重排能力,顺序性的节点访问方式,并且可以通过增删节点 来灵活地调整链表的长度。链表在 Redis 中的应用非常广泛,比如列表键的底层实现之一就是链表,除此之外,发布与订阅、慢查询、监视器等功能也用到了链表, Redis 服务器本身还使用链表来保存多个客户端的状态信息,以及使用链表来构建客户端输出缓冲区。链表的数据结构typedef struct listNode { //前置节点 struct listNode *prev...原创 2022-01-26 10:55:23 · 976 阅读 · 0 评论 -
Redis数据结构之SDS
Redis没有直接使用C语言传统的字符串表示,而是自己构建了一种名为简单动态字符串(simpledynamicstring,SDS)的抽象类型,并将SDS用作Redis的默认字符串表示。SDS结构总共有五类SDS结构,根据设置的字符串串长度,选择对应的结构体。结构体中,len表示字符串的长度,alloc 表示字符串最大的长度,flags 低三位保存sds的类型,buf 占位符。/* Note: sdshdr5 is never used, we just acce...原创 2022-01-24 11:32:47 · 1383 阅读 · 0 评论