redis持久化分為兩種,RDB和AOF,快照和日誌
持久化的目的是為了資料備份和恢復,並不是用來儲存?
例如依照AOF日誌中記錄的都是redis操作指令來看,也就是redis記憶體中有多少數據,持久化到磁碟上就有多少資料。
不會出現,記憶體中沒有某個key,而持久化中卻有這個key的情況(忽略主從同步是否及時問題,同步完成資料就統一了,討論最後結果)
所以也不會出現類似以下兩種情況的應用:
1.内存不够了,将旧的数据不断持久化到磁盘,而保持新的数据一直在内存中情况(如果设置了淘汰策略,此时会调用)
2.想查询一个内存中没有,但被持久化到磁盘上的数据,这个磁盘上的数据会被交换到内存中供查询
這也就是redis不太適合做大量資料儲存的原因?因為記憶體中的資料量就是持久化的資料量,不會出現記憶體中快取一部分,等到記憶體到達設定值,將冷資料持久化而將新資料保留記憶體(新記憶體中-舊持久化)的情況。因為持久化的目的不是儲存而是備份和恢復,需要確保所恢復的資料是記憶體中最新的資料!
我不知道這樣的理解是否正確,請大神解釋一下!