黃建宏-redis單機服務器

背景

這篇文章是對黃建宏的書籍的第二部分,單機服務器的總結/學習筆記。redis

數據結構

包含字段 1.數據數據庫

數據的數據結構是數組數組


節點的數據結構服務器

-- 爲何要弄這麼多數據庫? ?數據結構

切換數據庫

切換數組元素app


客戶端的數據結構 有個字段指向當前使用的數據庫,即數組的某個元素,默認是0號元素學習

包含哪些組件

服務器 客戶端lua

寫數據

分兩部分 1.第一層的Key/value是映射數據結構 2.第二層是value,value的數據結構就是對外數據結構,有各類類型的數據結構3d

不一樣持久化的區別

一個保存的是數據,一個保存的是命令。指針

保存命令,不是說只保存命令,而是保存命令+數據,把兩者直接當成一個字符串,按必定格式寫入和按必定格式還原。這種狀況只有字符串這種數據結構,沒有其餘數據結構。

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.數據庫鏈表

參考

黃建宏

相關文章
相關標籤/搜索