• 请不要在回答技术问题时复制粘贴 AI 生成的内容
revotu
V2EX  ›  程序员

一道 redis 面试题,被鄙视了

  •  
  •   revotu · Jul 17, 2017 · 5631 views
    This topic created in 3248 days ago, the information mentioned may be changed or developed.
    问题:MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中都是热点数据?
    ps.平常用 redis 作为 MySQL 的缓存,写写应用的 redis 读写接口,被问时一脸懵逼
    5 replies    2017-07-19 09:01:57 +08:00
    lolizeppelin
        1
    lolizeppelin  
       Jul 17, 2017 via Android
    数据设置过期时间
    每次访问都会延长生存时间
    yidinghe
        2
    yidinghe  
       Jul 17, 2017 via Android   ❤️ 1
    get 的时候重设 expire 时间,另外从 3.2.1 版本开始新增了 touch 命令。
    nameldk
        3
    nameldk  
       Jul 17, 2017   ❤️ 1
    感觉这个应该先设置 Redis 的 maxmemory ,然后再 设置 maxmemory-policy 为 allkeys-lru。让 Redis 自动移除数据,保留的数据为热点数据。
    wencan
        5
    wencan  
       Jul 19, 2017
    两种策略:
    策略一:
    假如 Mysql 数据库有 100 张表,其中 10 张表的数据是经常要访问的
    写一个计划任务,隔段时间将 10 张表的数据同步到 redis

    策略二:
    依据查询条件生成 key
    用 key 在 redis 找 value
    如果 value 找不到,则使用查询条件向 mysql 查询,结果缓存 redis,并设置过期时间

    不过这两种策略都不好控制 redis 数据为 20w
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1067 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 22:48 · PVG 06:48 · LAX 15:48 · JFK 18:48
    ♥ Do have faith in what you're doing.