跳至主要內容

元数据

黄健宏约 1281 字大约 4 分钟...

元数据

[!abstract] Redis设计与实现

  •  Redis设计与实现|200
    Redis设计与实现|200
  • 书名: Redis设计与实现
  • 作者: 黄健宏
  • 简介: 《Redis设计与实现》对Redis的大多数单机功能以及所有多机功能的实现原理进行了介绍,展示了这些功能的核心数据结构以及关键的算法思想。通过阅读本书,读者可以快速、有效地了解Redis的内部构造以及运作机制,这些知识可以帮助读者更好、更高效地使用Redis。本书主要分为四大部分。第一部分“数据结构与对象”介绍了Redis中的各种对象及其数据结构,并说明这些数据结构如何影响对象的功能和性能。第二部分“单机数据库的实现”对Redis实现单机数据库的方法进行了介绍,包括数据库、RDB持久化、AOF持久化、事件等。第三部分“多机数据库的实现”对Redis的Sentinel、复制(replication)、集群(cluster)三个多机功能进行了介绍。第四部分“独立功能的实现”对Redis中各个相对独立的功能模块进行了介绍,涉及发布与订阅、事务、Lua脚本、排序、二进制位数组、慢查询日志、监视器等。
  • 出版时间: 2015-01-01 00:00:00
  • ISBN: 9787111464747
  • 分类: 计算机-编程设计
  • 出版社: 机械工业出版社
  • PC地址:https://weread.qq.com/web/reader/d35323e0597db0d35bd957bopen in new window

高亮划线

5.1 跳跃表的实现

📌 ,不过表头节点的这些属性都不会被用到,所以图中省略了这些部分,只显示了表头节点的各个层。
⏱ 2021-07-11 15:40:58 ^622000-31-1729-1773

📌 每次创建一个新跳跃表节点的时候,程序都根据幂次定律(power law,越大的数出现的概率越小)随机生成一个介于1和32之间的值作为level数组的大小,这个大小就是层的“高度”。 ^622000-31-2504-2594

  • 💭 创建跳跃表时的层高 - ⏱ 2021-07-11 15:37:09

第8章 对象

📌 引用计数
⏱ 2021-07-17 07:36:34 ^622000-47-880-884

📌 对象共享机制
⏱ 2021-07-17 07:37:09 ^622000-47-889-895

📌 节约内存
⏱ 2021-07-17 07:36:53 ^622000-47-927-931

9.3 数据库键空间

📌 Redis是一个键值对(key-value pair)数据库服务器,服务器中的每个数据库都由一个redis.h/redisDb结构表示,其中,redisDb结构的dict字典保存了数据库中的所有键值对,我们将这个字典称为键空间(key space): ^622000-63-425-550

  • 💭 键空间 - ⏱ 2021-07-23 08:20:30

读书笔记

4.7 重点回顾

章节评论 No.1

  • 本章总结:
    #365天学习打卡 46/365
    #悟空日志 47/365

今天早上看了下 redis 字典,对几个概念做个总结:

1.字典 由2个哈希表组成。其中一个不常用的哈希表用作扩容和收缩。
2.哈希表由哈希表数组组成
3.哈希表数组由哈希表节点组成
4.哈希表节点由哈希键、哈希值组、下个哈希表节点的指针。这个指针可以将相同数组索引的节点串起来形成单向链表,用来解决哈希冲突。
5.负载因子:已保存节点数/哈希表大小。
6.扩容:如果 ht[1](字典中第一个哈希表) 的大小为第一个大于等于ht[0].used2 的 2 的 n 次方幂。如 used = 3,那么 32 =6,第一个大于等于 6 的 2 的 n 次方幂是8( 2 的 3 次方幂 )。
7.扩容时机:负载因子大于等于 1 且没有执行 BGSAV 命令或 BGREWRITEAOF 命令或大于等于 5 且正在执行 BGSAV 命令或 BGREWRITEAOF 命令
8.缩容: ht[1] 的大小为第一个大于等于ht[0].used 的 2 的 n 次方幂。
9.负载因子小于 0.1 时,自动收缩。
10.采取渐进式扩容。
11.扩容时如果有查找、更新、删除键,则先到 ht[0] 里面找,没找到再去 ht[1]。添加只会在 ht[1] 里面做。 ^37992928-7rF2ydZ83
- ⏱ 2021-07-09 09:51:21

5.1 跳跃表的实现

划线评论

📌 每次创建一个新跳跃表节点的时候,程序都根据幂次定律(power law,越大的数出现的概率越小)随机生成一个介于1和32之间的值作为level数组的大小,这个大小就是层的“高度”。 ^37992928-7rIrQiM9R
- 💭 创建跳跃表时的层高
- ⏱ 2021-07-11 15:37:32

9.3 数据库键空间

划线评论

📌 Redis是一个键值对(key-value pair)数据库服务器,服务器中的每个数据库都由一个redis.h/redisDb结构表示,其中,redisDb结构的dict字典保存了数据库中的所有键值对,我们将这个字典称为键空间(key space): ^37992928-7s0eVvC1B
- 💭 键空间
- ⏱ 2021-07-23 08:20:23

本书评论

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.3.0