刷新 LRU 缓存
我正在使用从 LinkedHashMap 扩展的映射来实现缓存(这样我就可以实现removeEldestEntry)。旧的实现使用常规哈希图,以设定的时间间隔刷新。我想知道如何使缓存中的数据保持最新。我怀疑我是否可以在特定时间刷新而不弄乱 LRU 的点。查询数据库中条目的时间戳会不会特别昂贵?
I am implementing a cache using a map extended from LinkedHashMap (so I can implement removeEldestEntry). The old implementation used a regular hash map, refreshed at a set interval. I was wondering how I can keep the data in the cache current. I doubt I can just refresh at a specific time without messing up the point of LRU. Would it be particularly costly to query the DB for a time stamp on the entry?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
为什么不使用 操作系统缓存 - 没有必要重新发明轮子。
Why not use OS Cache - no point in reinventing the wheel.
我最终选择了 LinkedHashMap,按访问时间排序并检查数据库的时间戳。这就像一个魅力,大大减少了应用程序的内存负载。
I ended up going with the LinkedHashMap, ordered by access time and checking against the db for timestamps. This worked like a charm and greatly reduced the memory load of the application.