这篇文章是对黄建宏的书籍的第二部分,单机服务器的总结/学习笔记。redis
包含字段 1.数据数据库
数据的数据结构是数组数组
节点的数据结构服务器
-- 为何要弄这么多数据库? ?数据结构
切换数组元素app
客户端的数据结构 有个字段指向当前使用的数据库,即数组的某个元素,默认是0号元素学习
服务器 客户端lua
分两部分 1.第一层的Key/value是映射数据结构 2.第二层是value,value的数据结构就是对外数据结构,有各类类型的数据结构3d
一个保存的是数据,一个保存的是命令。指针
保存命令,不是说只保存命令,而是保存命令+数据,把两者直接当成一个字符串,按必定格式写入和按必定格式还原。这种状况只有字符串这种数据结构,没有其余数据结构。
Redis DB
数据结构
存储的是二进制,且通过压缩
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.数据库链表
黄建宏