先了解乙個 k-v資料的記憶體比例
set kk v111
分兩個部分。
每個k-v 佔據的空間+bucket佔據的空間
bucket:每個k-v 資料之間佔的記憶體
大於 k-v 個數的 2的n次方大小的最小值
比如 次處只有1個資料 那麼佔的大小就是 2的1次方
bucket : 2bit
dictentry: key ,val ,next 佔 24個bit 由jemalloc會分配32位元組的記憶體塊
key :存在於 sds(中) 需要 kk(2)+9 = 11bit
redisobject : 佔固定的 16bit
value:sds 所以 需要 4+9=13bit
redisobject: 佔 16bit
綜上,乙個dictentry所佔據的空間需要32+11+13+16個位元組。
優化方式:1.利用jemalloc特性進行優化
2.使用整形/長整形
3.使用和設定共享物件
4.避免過度設計
5.關注記憶體碎片率
redis訊息模式:1.佇列模式 2.發布訂閱模式
redis stream :
快取淘汰策略
lru原理:last recently used ) 最近最小使用原則
具體
redis持久化 AOF持久化
1.aof持久化原理 aof持久化會將被執行的寫命令寫到aof檔案的末尾。在恢復的時候,redis只要從頭到尾重新執行一次aof檔案包含的所有寫命令 2.配置選項 固態硬碟禁用always選項,在某些情況頻繁讀寫會大大降低固態硬碟的壽命 4.aof檔案的重寫和壓縮 aof檔案裡面記錄了所有的命令而不...
redis持久化之AOF持久化
aof與rdb持久化通過儲存資料庫中的鍵值對來記錄資料庫狀態不同,aof持久化是通過儲存redis伺服器所執行的寫命令來記錄資料庫狀態的。被寫入aof檔案的所有命令都是以redis的命令請求協議格式儲存的。當aof持久化功能處於開啟狀態,伺服器在執行完乙個寫命令之後,會以協議格式將被執行的寫命令追加...
Redis(三) redis持久化
redis是支援資料持久化的,雖然在生產中經常被當做快取伺服器使用。redis持久化機制分為兩種 第一種是快照第二種是aof日誌。快照原理 前面redis基礎篇中提到,redis是單執行緒的,這個執行緒需要同時處理客戶端的請求和記憶體資料結構的邏輯讀寫,顯然難以在保持高效能的前提下完成這些工作。所以...