发新话题
打印

[开发] 《Redis设计与实现》黄健宏

《Redis设计与实现》黄健宏

  本书全面而完整地讲解了Redis的内部机制与实现方式,对Redis的大多数单机功能以及所有多机功能的实现原理进行了介绍,展示了这些功能的核心数据结构以及关键的算法思想,图示丰富,描述清晰,并给出大量参考信息。通过阅读本书,读者可以快速、有效地了解Redis的内部构造以及运作机制,更好、更高效地使用Redis。

  

  本书主要分为四大部分。第一部分“数据结构与对象”介绍了Redis中的各种对象及其数据结构,并说明这些数据结构如何影响对象的功能和性能。第二部分“单机数据库的实现”对Redis实现单机数据库的方法进行了介绍,包括数据库、RDB持久化、AOF持久化、事件等。第三部分“多机数据库的实现”对Redis的Sentinel、复制、集群三个多机功能进行了介绍。第四部分“独立功能的实现”对Redis中各个相对独立的功能模块进行了介绍,涉及发布与订阅、事务、Lua脚本、排序、二进制位数组、慢查询日志、监视器等。本书作者专门维护了www.redisbook.com网站,提供带有详细注释的Redis源代码,以及本书相关的更新内容。

  
免费内容:
下载:Redis设计与实现.pdf.zip

TOP

SDS 简单动态字符串

SDS结构包括
free 未占用空间
len 长度
buf 保存值的数组

SDS保证了获取长度的时间复杂度为O(1),而非C语言的O(N)

SDS在拼接字符串时,会自动检查free空间是否足够,如果不够的话,sdscat会先扩展SDS空间,然后再拼接

通过free,SDS实现了空间预分配和惰性空间释放两种策略

空间预分配:扩展后SDS长度小于1M,分配与len相同的free空间;如果修改后SDS长度大于1M,分配1M的free空间

惰性空间释放:缩短SDS长度,会保留多余空间给free用于将来备用

二进制安全:对buf中保存的不是字符,而是二进制数据
流浪了那么多年,终于发现,这里才是我唯一的家。我只想回到这个对自己是那样熟悉和那样亲切的环境里,在和自己极为相似的人群里停留下来,才能够安心地去生活,安心地去爱与被爱。

TOP

发新话题