0

我有一个约会安排应用程序,其中绝大多数约会数据都是“桥下的水”。对于任何给定的日历页面,该页面上可能有 5% 的约会是新的;其余的都是旧的,不太可能改变。

问题是每个页面都可以有大量的约会,并且加载所有这些约会(即使是急切加载)很慢。我想做一些缓存以加快速度,但我不想每次有人创建约会时都使整个缓存无效,因为用户在每次创建约会后都会看到日历页面,所以似乎使整个缓存无效那一点将破坏缓存的整个目的。

我的理解是我想要的是LRU 缓存。我如何在 Rails/PostgreSQL 缓存中实现这​​一点?应该在应用程序级别还是数据库级别完成?LRU 缓存是否正确?

4

1 回答 1

0

一个可能的问题是您的 ORM 可能会生成大量小查询。要做的第一件事是整合您的数据语句并酌情使用 SQL 来获取一组有趣的约会。从那里你可以使用 PostgreSQL 索引使事情变得非常快。请注意,PostgreSQL 允许您创建部分索引和完整索引,这允许您一次索引一个表的片段。

但是,如果这不起作用,那么一种选择是使用 LISTEN 和 NOTIFY 使特定缓存条目无效并强制它们重建。但是,您在这里面临一些重大挑战,因此这不是我要开始的地方。请记住,PostgreSQL 自己做了一些 LRU 缓存,所以你可以在这方面做的越多,优化你的数据库,你就越不用担心其余的事情。

于 2013-05-12T12:16:12.640 回答