天天看点

腾讯专家手敲万字《Redis源码日志笔记》

引言

本文分为六个部分,包括 redis 源码日志,服务框架,基础数据结构,内功心法,应用,其他,从源码层面循序渐进的了解redis。可以快速、有效地了解redis 的内部构造以及运作机制,更好、更高效地使用redis。

本文框架如下

第一部分,主要是在阅读代码过程中的日志和笔记;

第二部分,主要介绍了 redis 的主要框架,以及 redis 是如何提供服务的,从一个最简单的命令开始讲起;

第三部分,主要介绍 redis 底层用作存储的数据结构,这一部分很有趣;

第四部分,主要讲解了 redis 的核心功能,包括持久化,订阅/发布模式,主从复制,事务机制,集群等等;

第五部分,展示了 redis 几个简单的应用;

第六部分,介绍了 redis 和 memcached 的区别,以及稍稍讲解了 memcached。

腾讯专家手敲万字《Redis源码日志笔记》

redis服务框架

①初探 redis

redis 在缓存系统所处的位置

腾讯专家手敲万字《Redis源码日志笔记》

②redis 事件驱动详解

事件驱动数据结构

事件循环中心

腾讯专家手敲万字《Redis源码日志笔记》

redis 事件驱动原理

事件注册详解

准备监听工作

为监听套接字注册事件

事件循环

事件触发

腾讯专家手敲万字《Redis源码日志笔记》

③redis 是如何提供服务的

initserverconfig()

aemain()

新连接的处理流程

请求的处理流程

执行命令

在哪里回复客户端

腾讯专家手敲万字《Redis源码日志笔记》

redis 基础数据结构

①redis 数据结构综述

一览 redis 数据结构:

redis 命令和相关的数据结构

redis 数据结构 redisob

redis 数据结构 sds

redis 数据结构 dict

redis 数据结构 ziplist

redis 数据结构 skiplist

redis 数据结构 intset

腾讯专家手敲万字《Redis源码日志笔记》

redis 内功心法

①redis 数据淘汰机制

概述

lru 数据淘汰机制

ttl 数据淘汰机制

在哪里开始淘汰数据

腾讯专家手敲万字《Redis源码日志笔记》

②rdb 持久化策略

简介 redis 持久化 rdb、aof

数据结构 rio

rdb 持久化的运作机制

rdb 数据的组织方式

腾讯专家手敲万字《Redis源码日志笔记》

③aof 持久化策略

简介

aof 数据组织方式

aof 持久化运作机制

细说更新缓存

aof 恢复过程

aof 的适用场景

腾讯专家手敲万字《Redis源码日志笔记》

④订阅发布机制

两种订阅

订阅相关数据结构

订阅过程

消息发布

腾讯专家手敲万字《Redis源码日志笔记》

⑤主从复制

积压空间

主从数据同步机制概述

全同步

部分同步

缓存主机

总结

腾讯专家手敲万字《Redis源码日志笔记》

⑥redis 事务机制

redis 事务简述

redis 命令队列

键值的监视

redis 事务的执行与取消

redis 事务番外篇

腾讯专家手敲万字《Redis源码日志笔记》

⑦redis 与 lua 脚本

lua 简介

redis 为什么添加 lua 支持

lua 环境的初始化

lua 脚本执行 redis 命令

redis lua 脚本的执行过程

脏命令

lua 脚本的传播

腾讯专家手敲万字《Redis源码日志笔记》

⑧redis 哨兵机制

redis 哨兵的服务框架

定时程序

哨兵与 redis 服务器的互联

hello 命令

info 命令

心跳

在线状态监测

故障修复

redis 监视器

redis 数据迁移

腾讯专家手敲万字《Redis源码日志笔记》

⑨redis 集群(上)

前奏

谈一致性哈希算法(consistent hashing)

怎么实现?

twemproxy - redis 集群管理方案

redis 官方版本支持的集群

腾讯专家手敲万字《Redis源码日志笔记》

⑩redis 集群(下)

数据结构

数据访问

新的节点

心跳机制

故障修复的协议

数据迁移

腾讯专家手敲万字《Redis源码日志笔记》

redis 应用

积分排行榜

分布式锁

消息中间件

web 服务器存储 session

腾讯专家手敲万字《Redis源码日志笔记》

其他

①内存数据管理

共享对象

两种内存分配策略

memory aware 支持

zmalloc_get_private_dirty() 函数

腾讯专家手敲万字《Redis源码日志笔记》

②redis 日志和断言

redis 日志

redis 断言

腾讯专家手敲万字《Redis源码日志笔记》

③redis 与 memcache

单进程单线程与单进程多线程

丰富与简单的数据结构

性能测试

腾讯专家手敲万字《Redis源码日志笔记》

④小剖memcache

初始化过程

unix 域套接字和 udp/tcp 工作模式

工作线程管理和线程调配方式

存储容器

连接管理

一个请求的工作流程

memcached 的分布式

腾讯专家手敲万字《Redis源码日志笔记》

⑤memcached slab 分配策略

memcached slab 概述

slab class

内存分配的过程

lru 机制

腾讯专家手敲万字《Redis源码日志笔记》

⑥源码阅读工具

sublime text 2/3

eclipse cdt

source insight

腾讯专家手敲万字《Redis源码日志笔记》

完结

redis基于内存,常用作于缓存的一种技术,并且redis存储的方式是以key-value的形式。redis是如今互联网技术架构中,使用最广泛的缓存,在工作中常常会使用到。redis也是中高级后端工程师技术面试中,面试官最喜欢问的问题之一,因此作为java开发者,redis是我们必须要掌握的。

redis 是 nosql 数据库领域的佼佼者,如果你需要了解 redis 是如何实现高并发、海量数据存储的,那么这份腾讯专家手敲《redis源码日志笔记》将会是你的最佳选择。

腾讯专家手敲万字《Redis源码日志笔记》