redis設計與實現 讀書筆記1

2021-08-07 02:39:55 字數 563 閱讀 7940

乙個業務模型引出對redis的好奇:

提出問題:

1.redis 的五種資料型別分別由什麼資料結構實現?

2.redis 的字串型別既可以儲存字串,也可以儲存整數和浮點數,甚至是二進位制位(使用setbit)

redis 內部是如何實現儲存這些值?

3.redis的一部分命令只能對特定的資料型別執行

而另一部分可以對所有資料型別執行

eg:del type 和expire

不同的命令在執行的時候是如何進行型別檢查的?

redis內部是否實現了乙個型別系統?

4.redis的資料庫是怎樣儲存各種不同資料型別的鍵值對的?

資料庫中的過期性又是如何實現自動刪除的?

5.除了資料庫之外,redis還擁有發布 訂閱 指令碼 事務 等特性,這些特性如何實現?

6.redis使用什麼模型或者模式來處理客戶端的命令請求?

一條命令從發布到返回需要經歷什麼步驟?

《redis設計與實現》讀書筆記

sds dynamic string 比起 c 字串,sds 具有以下優點 len屬性維護字串長度,常數複雜度即可獲取。預先檢查長度是否滿足需求,如果不滿足自動拓展,杜絕緩衝區溢位。空間預分配 惰性空間釋放會減少修改字串長度時所需的記憶體重分配次數。二進位制安全。相容部分 c 字串函式。list 鍊...

《redis設計與實現》讀書筆記(一)

定時刪除 惰性刪除 定期刪除 描述一過期立馬刪除 下次獲取時再刪除 每隔一段時間批量刪除 優點對記憶體友好 對cpu時間友好 缺點 對cpu時間不友好 對記憶體不友好 aof持久化是通過儲存redis伺服器所執行的寫命令來記錄資料庫狀態。aof持久化的實現 命令追加 寫命令以協議的格式追加到aof ...

redis設計和實現》讀書筆記

redis如何實現主從同步的高效率?主從複製的同步有乙個命令資料的同步文字,然後利用兩個不同伺服器的偏移量來進行進行同步,避免每次都是全部同步 並非會儲存所有的命令資料,而是會有乙個緩衝區 比如1m,比如2m 如果偏移量在這個緩衝區裡面則是會部分同步 redis的備份包括儲存資料的二進位制和命令的同...