V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
haikuo93
V2EX  ›  Redis

关于 redis 的持久化和数据淘汰策略

  •  1
     
  •   haikuo93 · 2020-02-13 10:22:47 +08:00 · 7323 次点击
    这是一个创建于 1743 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们知道 redis 有两种持久化策略,也有几种数据淘汰策略,那假如一条数据已经被持久化到磁盘里,之后很长时间都没有被访问过,触发了 LRU 淘汰机制,那后面再 GET 这条数据的时候,还会去磁盘里找到这条数据吗

    star00
        1
    star00  
       2020-02-13 10:55:24 +08:00
    不会
    pudgedoor
        2
    pudgedoor  
       2020-02-13 11:02:23 +08:00   ❤️ 2
    首先,GET 的时候不是去磁盘找,而是去内存。Redis GET 操作的时候发现 Key 过期了不会返回值这个 val。

    另外对于 RDB 的过期 key:
    如果服务器以主服务器模式运行,那么在载入 RDB 文件时,程序会对文件中保存的键进行检查,未过期的键会被载入到数据库中,而过期键则会被忽略,所以过期键对载入 RDB 文件的主服务器不会造成影响。❑如果服务器以从服务器模式运行,那么在载入 RDB 文件时,文件中保存的所有键,不论是否过期,都会被载入到数据库中。不过,因为主从服务器在进行数据同步的时候,从服务器的数据库就会被清空,所以一般来讲,过期键对载入 RDB 文件的从服务器也不会造成影响。
    对于 AOF 的过期 key:
    当过期键被惰性删除或者定期删除之后,程序会向 AOF 文件追加( append )一条 DEL 命令,来显式地记录该键已被删除。然后最终在 AOF 重写时,这条 DEL 和 SET 会被彻底干掉。
    haikuo93
        3
    haikuo93  
    OP
       2020-02-13 11:05:43 +08:00
    @pudgedoor 明白了,多谢!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   958 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:30 · PVG 05:30 · LAX 13:30 · JFK 16:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.