首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Coding
V2EX  ›  程序员

用去重表实现幂等性,怎么优雅地回收表内不再使用的项?

  •  
  •   streamo · 2018-06-28 14:26:03 +08:00 · 1431 次点击
    这是一个创建于 533 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前提:无法用业务 ID 或其他方法判断这个消息是否在业务端被消费过,也就是说这个消息如果被消费过多次,仅仅会造成结果错误,但逻辑上是合法的,所以只能通过消息 ID 跟去重表内项比对判断是否消费过该消息。

    请问各位有什么优雅的方案实现表内项回收吗,我能想到的是用容量足够大的 LRU。
    3 回复  |  直到 2018-06-28 16:28:44 +08:00
        1
    lihongjie0209   2018-06-28 14:42:28 +08:00
    消息最起码的属性有 ID 和 Timestemp

    消息只在一定的时间范围内有意义, 极端一点, 你不可能收到一条一年前的消息还接着处理.

    所以根据业务需求给消息 ID 设置一个 TTL, 或者是直接用 Redis 等缓存机制来保证在合理的时间范围内不会重复消费
        2
    streamo   2018-06-28 16:19:44 +08:00
    @lihongjie0209 嗯,跟我想的差不多,就是一个带过期键支持的 LRU cache。
        3
    lihongjie0209   2018-06-28 16:28:44 +08:00
    @streamo #2 我觉能能运行的都很优雅, 至于优化, 需要的时候再说
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1478 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 00:25 · PVG 08:25 · LAX 16:25 · JFK 19:25
    ♥ Do have faith in what you're doing.