黄建宏-redis单机服务器

背景

这篇文章是对黄建宏的书籍的第二部分,单机服务器的总结/学习笔记。

数据结构

包含字段 1.数据

数据的数据结构是数组


节点的数据结构

-- 为什么要弄这么多数据库? ?

切换数据库

切换数组元素


客户端的数据结构 有个字段指向当前使用的数据库,即数组的某个元素,默认是0号元素

包含哪些组件

服务器 客户端

写数据

分两部分 1.第一层的Key/value是映射数据结构 2.第二层是value,value的数据结构就是对外数据结构,有各种类型的数据结构

不同持久化的区别

一个保存的是数据,一个保存的是命令。

保存命令,不是说只保存命令,而是保存命令+数据,把二者直接当成一个字符串,按一定格式写入和按一定格式还原。这种情况只有字符串这种数据结构,没有其他数据结构。

RDB持久化

Redis DB

数据结构


存储的是二进制,且经过压缩

存储命令AOF

append only file追加文件

写命令,写入和还原的方式,和写数据的写入和还原有点不一样。


重写,为什么要重写?怎么重写?

后台重写?为什么要后台重写?怎么实现?

事件

两种
1.文件事件
2.时间事件

文件就是套接字事件,时间就是定时任务事件。


文件事件


事件处理器类型
1.请求
2.响应

客户端

服务器的数据结构里有个指针字段指向了一个链表,链表保存了所有的客户端。然后,客户端又包含了客户端的所有数据信息。


输入缓冲区
输入缓冲区字段,保存了命令+数据,以字符串格式保存。

输出缓冲区
1.短数据
固定大小
2.长数据
可变大小

短数据,就是成功之后,返回ok之类的信息

长数据


生命周期
1.创建客户端
2.关闭客户端

当然,都是在服务器创建和关闭的,客户端也可以主动关闭。


redis与lua脚本
lua脚本可以作为伪客户端

注:命令存储AOF这种方式,也可以作为伪客户端。

服务器

步骤
1.客户端请求数据
需要转换请求数据为redis协议的格式的数据
2.服务器处理数据
3.服务器响应成功数据
4.客户端显示数据


生命周期
1.服务器创建
2.运行
3.关闭


数据结构
1.客户端链表
2.数据库链表

参考

黄建宏

转载于:https://juejin.im/post/5ceaa57a6fb9a07ee30df6e9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值