redis持久化分为两种,RDB和AOF,快照和日志
持久化的目的是为了数据备份和恢复,并不是用来存储?
比如按照AOF日志中记录的都是redis操作命令来看,也就是redis内存中有多少数据,持久化到磁盘上就有多少数据。
不会出现,内存中没有某个key,而持久化中却有这个key的情况(忽略主从同步是否及时问题,同步完成数据就统一了,讨论最后结果)
所以也就不会出现类似以下两种情况的应用:
1.内存不够了,将旧的数据不断持久化到磁盘,而保持新的数据一直在内存中情况(如果设置了淘汰策略,此时会调用)
2.想查询一个内存中没有,但被持久化到磁盘上的数据,这个磁盘上的数据会被交换到内存中供查询
这也就是redis不太适合做海量数据存储的原因?因为内存中的数据量就是持久化的数据量,不会出现内存中缓存一部分,等到内存到达设定值,将冷数据持久化而将新数据保留内存(新内存中-旧持久化)的情况。因为持久化的目的不是存储而是备份和恢复,需要保证所恢复的数据是内存中最新的数据!
我不知道这样的理解是否正确,请大神解释一下!