redis 持久化开启 淘汰策略 硬盘保留吗

如题所述

Redis有RDB和AOF两种持久化方式,RDB容易都数据,AOF由于保存的历史,会使得文件非常非常大,就得启用rewrite的功能。
所以都会有fork出一个子进程,有子进程将数据写入磁盘。
之前有人说子进程会完全copy父进程的内存,所以必须让redis留出一半的内存空着才会安全。
其实是不准确的,在进行RDB或者rewrite AOF的时候,redis也会利用Linux' Copy-on-write的思想。简单来说就是子进程并不会真正copu父进程的内存数据,只是在新对象的内存映射表中保存旧数据的指针,只有旧数据有更改,才会把这部分数据copy到新的内存空间吧?最终就是在写snapshot期间被修改的页面的大小。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-06-02
淘汰策略
volatile-lru:从已设置过期时间的数据集(server. db[i]. expires)中挑选最近最少使用的数据淘汰。
volatile-ttl:从已设置过期时间的数据集(server. db[i]. expires)中挑选将要过期的数据淘汰。
volatile-random:从已设置过期时间的数据集(server. db[i]. expires)中任意选择数据淘汰。
allkeys-lru:从数据集(server. db[i]. dict)中挑选最近最少使用的数据淘汰。
allkeys-random:从数据集(server. db[i]. dict)中任意选择数据淘汰。
no-enviction(驱逐):禁止驱逐数据。
相似回答