如何实现node-lru-cache?

时间:2014-01-28 11:02:15

标签: node.js mongodb caching

我使用 Node.js Socket.io mongodb 开发了一个实时应用。它具有一定的要求,当用户加载特定页面时,从mongodb获取大约20000个具有x和y坐标的点,这些点位于2个特定日期之间,并在地图上呈现给客户端。现在,如果用户再次重新加载,则重复该过程。我很困惑如何使用什么键在缓存中插入这些点,以便在用户重新加载时,使用密钥轻松获取缓存中的值。 有什么建议?谢谢!

3 个答案:

答案 0 :(得分:0)

你可以

  1. 完全编写自己的缓存层

  2. 在此使用现有的缓存库(例如 lru-cache - isaacs的模块, 这可能是这个领域最受欢迎的)

  3. 可以使用redis作为缓存(有 能够为插入的文档设置TTL)已经有了 mongoose-redis-cache - 模块, 也许这有帮助

  4. 可能还有其他x解决方案。这取决于您的数据规模/要求数量等。

答案 1 :(得分:0)

在这种情况下,缓存是数据库为您执行的操作。 MongoDB依赖于操作系统的内存映射I / O进行存储。通用操作系统通常会将最常用的页面保留在内存中。如果您仍想使用其他缓存,则用于坐标的明显键是Geohash

答案 2 :(得分:0)

此库runtime-memcache在JavaScript中实现了lru和其他一些缓存方案。与Node.js一起使用,并以Typescript编写。

它使用修改后的双链表为getsetremove实现O(1)。