美文网首页
《redis设计与实现》读书笔记一

《redis设计与实现》读书笔记一

作者: 真实的追梦者 | 来源:发表于2019-02-16 22:05 被阅读10次

Redis构建了一种简单动态字符串(SDS),并将SDS用作redis的默认字符串表示

通过使用SDS,将获取字符串长度所需的复杂度从o(n)降到了o(1)

SDS杜绝了缓冲区溢出,因为它在修改之前会判断空间是否满足需求

当对一个SDS进行修改时,程序不仅会分配修改所必要的空间,还会分配额外未使用的空间,从而减少内存分配的次数

惰性释放空间,当缩短字符串时,程序并不立即回收释放的字节,而是使用 free 属性记录,等待将来使用

二进制安全,通过len属性的值来判断字符串是否结束

redis链表特性:

双端,链表节点带有prev和next指针,

无环,对链表的访问以null为终点

带表头指针和表尾指针

带链表长度计数器

多态,链表可以保存不同类型的值

Redis哈希表使用链地址法来解决冲突,每个哈希表节点都有一个next指针,被分到同一个索引上的多个节点可以使用next指针链接

Rehash:为ht[1]分配空间;将ht[0]的所有键值对rehash到ht[1];释放ht[0],将ht[1]设置为ht[0],并创建新的空哈希表,渐进式rehash会维持rehashidx变量,用来表示工作进度

跳表的跨度用来计算排位,在跳跃表中,可以包含相同的分值,但节点的成员对象必须是唯一的

整数集合:以有序,无重复的方式保存集合元素,支持升级操作

压缩列表可以包含多个节点,添加或删除节点有可能引发连锁更新操作

 Redis根据不同的使用场景来为一个对象设置不同的编码,从而优化使用效率

有序集合的一种底层实现方式是包含一个字典和跳跃表

执行命令之前会先检查类型,并且根据实现的具体方式执行不同的函数

通过使用引用计数的方式来实现内存回收

为了节约内存,redis对只包含整数值得字符串对象进行共享

空转时长,指当前时间减去对象的lru时间

相关文章

  • 《redis设计与实现》 读书笔记

    《redis设计与实现》 读书笔记 《redis设计与实现》 作者:黄健宏 一、前言 什么是redis:Redis...

  • redis数据结构

    引言 从本次开始,对Redis设计与实现进行阅读及相关读书笔记的记录。Redis版本为3.0 数据结构 简单动态字...

  • Redis 五大类型的对象

    《Redis 设计与实现》[http://redisbook.com/index.html]《Redis 设计与实...

  • Redis数据库实现

    《Redis 设计与实现》[http://redisbook.com/index.html]《Redis 设计与实...

  • RDB持久化

    《Redis 设计与实现》[http://redisbook.com/index.html]《Redis 设计与实...

  • AOF持久化

    《Redis 设计与实现》[http://redisbook.com/index.html]《Redis 设计与实...

  • Redis底层数据结构

    《Redis 设计与实现》[http://redisbook.com/index.html]《Redis 设计与实...

  • Redis事件

    《Redis 设计与实现》[http://redisbook.com/index.html]《Redis 设计与实...

  • Redis客户端

    《Redis 设计与实现》[http://redisbook.com/index.html]《Redis 设计与实...

  • Redis 服务器

    《Redis 设计与实现》[http://redisbook.com/index.html]《Redis 设计与实...

网友评论

      本文标题:《redis设计与实现》读书笔记一

      本文链接:https://www.haomeiwen.com/subject/aotweqtx.html