V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
DavidNineRoc
V2EX  ›  问与答

大家来讨论一下缓存你们是怎么管理批量失效缓存问题和 tag 问题, 又是如何实现的?

  •  
  •   DavidNineRoc · 2020-05-18 16:44:02 +08:00 · 527 次点击
    这是一个创建于 1432 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如有一个接口:

    /api/v1/configs?page=xxx&version=xxxx
    
    1. 只有一个tag标记
    • 根据page区别
    • 这个接口需要缓存,当缓存变更时,每一个page的缓存都要失效

    我用的是tag缓存实现, 大伙用的是什么方式

    // 缓存
    Cache.tag(page).put(requestPath + page, responseData);
    // 当修改后所有 page 失效缓存
    Cache.tag(page).flush()
    

    (如果缓存驱动是file感觉可以用目录作为tag的实现,如果是redis也可以用:划分层级实现)

    1. 第二种如果一个缓存有多个tag标记,并且每一个都能影响到缓存
    • 根据pageversion区别
    • 这个接口需要缓存,当缓存变更时,每一个pageversion的缓存都要失效
    // tag 无先后顺序
    Cache.tag([page, version]).put(requestPath + page + version, responseData);
    // 如
    Cache.tag([1, '1.0.0']).put('/path1', data);
    Cache.tag([2, '1.0.0']).put('/path2', data);
    
    // /path1 将会清除
    Cache.tag(1).flush()
    // /path1 和 /path2 都会清除
    Cache.tag(version).flush()
    

    这种方案又是怎么实现的呢?


    最后也问一下大家分页缓存(也就是第一种)大家都有什么别的方案管理缓存呢.

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2872 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 07:07 · PVG 15:07 · LAX 00:07 · JFK 03:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.