這篇文章是對黃建宏的書籍的第二部分,單機服務器的總結/學習筆記。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.數據庫鏈表
黃建宏