乙個業務模型引出對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的備份包括儲存資料的二進位制和命令的同...