【问题标题】:Caching temporary data - PostgreSQL and Mongo缓存临时数据 - PostgreSQL 和 Mongodb
【发布时间】:2014-05-13 21:28:52
【问题描述】:

我有一些来自 API 的数据需要缓存。我希望这些数据在 X 天后失效,但我希望它可以在本地使用,以便为最终用户节省查询和编译内容的时间。

目前我有一个 PostgreSQL 数据库。我想保留它,因为我不想将用户记录之类的永久数据放入 Mongo 中(除非你们可以说服我)。我真的没有反对 Mongo,但我可以与用户规范一些事情,而我认为没有大量重复的唯一方法是通过 PostgreSQL。

现在我的 API 数据是扁平的,并且是 JSON 格式。我不需要创建到任何其他表的任何类型的链接,它有一个字段,我可以很容易地将其用作键。我的想法是将数据从字面上“扔”到 Mongo 实例中并根据需要进行查询,每 X 天无效。如果服务器由于某种原因出现故障,这也提供了一些持久性。

所以我对你们的问题是这样的。这是 Mongo over memcached 的一个很好的用例吗?我应该只对原始数据进行内存缓存吗?如果你们确实建议使用 Mongo,我是否应该将我的用户表和关系也移到 Mongo 上?

谢谢!

【问题讨论】:

    标签: sql ruby-on-rails mongodb postgresql caching


    【解决方案1】:

    这是 Redis 真正擅长的事情。 Redis,可能通过 PostgreSQL 的 LISTEN 和 NOTIFY 选择性地使缓存失效,是一种管理缓存的非常轻松的方法。

    另一种选择是在 PostgreSQL 中使用 UNLOGGED 表。

    【讨论】:

    • 你能在 UNLOGGED 表上扩展一点吗?我从来没有听说过他们。另外,既然您似乎对 Redis 很了解 - 让 Redis 和 PostgreSQL 一起工作有多难?
    • 您通常希望您的应用程序协调事物,而不是将 Pg 直接插入 Redis,尽管您也可以这样做(请参阅 redis_fdw - 但我自己没有使用它)。您通常会像使用更智能的 memcached 一样使用它。至于 UNLOGGED ...请参阅文档;它基本上是一个易失的表,它使用较少的资源来插入/更新/删除,因为它没有记录在 WAL 中,但它不是崩溃安全的,所以如果 PostgreSQL 或服务器崩溃,数据就会丢失。
    猜你喜欢
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 2019-10-04
    • 2012-01-15
    • 1970-01-01
    • 2014-01-25
    • 2021-08-16
    • 2021-10-07
    相关资源
    最近更新 更多