redis lua 二进制_Redis学习笔记2-《Redis设计与实现》读书笔记

概述

整本书按前言写的,可以划分为四个部分:Redis数据与对象,单机数据库的实现,多机数据库的实现,独立功能的实现。下面将按这进行分别整理。

Redis数据与对象

  • Redis五种数据结构:string(字符串), list(列表), hash(哈希), set(集合), sort set(有序集合)。
  • 简单动态字符串的实现,跟C语言的字符串的区别。
  • Redis链表实现及特点:双端,无环,带表头表尾带长度计数,多态
  • 字典:采用的是hash, 采用hash的话,就会有键冲突及rehash过程,怎么来处理。
  • 跳跃表: 跳跃表算法的原理及实现。
  • 整数集合:数据结点的实现,升级及降级的过程。
  • 压缩列表:压缩列表的构成。
  • 对象:五种数据结构对象的实现,Redis中内存回收策略,对象共享机制。

单机数据库的实现

  • 数据库的概念及常用的命令操作(选择数据库,设置过期时间等)
  • 过期键策略:定时删除,惰性删除,定期删除。这三种各自的特点。这些也经常能在公众号里看见。
  • 持久化的方式:RDB持久化,AOF持久化。这两种方式的实现及各自操作的命令。这块各大公众号讲的会很多。各自的优缺点。
  • RDB的文件结构。
  • Redis事件的实现机制。涉及到IO多路复用的实现。
  • 客户端:相应的命令及实现的逻辑,如创建,关闭等。这块真研究的话,会涉及到socket编程。
  • 服务器:处理命令的流程。内部实现的代码,有兴趣可以研究。

多机数据库的实现

  • 服务器复制的流程,新旧版本的区别(新的版本重点改进了断线后复制的效率问题)
  • 集群模式:Sentinel及集群模式。
  • Sentinel模式:保证高可用,怎么部署。选主的逻辑,还有怎么实现故障转移。
  • 集群模式:保证内存,怎么部署。槽的概念(之前看过一篇文章讲为什么Redis Cluster会设计成16384个槽的),复制及故障转移。

独立功能的实现

  • 发布订阅:涉及到频道及模式的订阅,可以利用这个来实现一个消息队列。
  • 事务:Redis如何保证一致性,原子性和隔离性。
  • Lua脚本:跟Lua脚本的集成,通过EVAL命令实现。
  • 排序:排序的命令,sort可以设置升降序,限制长度,是否保存,获取外部键等。
  • 二进制位数组:二进制位统计算法(遍历,查表,统计算法),及Redis内部实现。
  • 慢查询日志:相关配置及介绍。
  • 监视器:相关配置及介绍。

其它

除了上面书中介绍的这些,Redis还有一些经常能看到的一些问题:

  • 用Redis怎么来实现分布式锁。Setnx,RedLock, Redission。

看完整个书之后,总结出来的东西大概就这些。

PS:开了一个公众号,感兴趣的可以关注一下~

7c25af39ef59f645994c49f582fc20b8.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值