25

我使用 PostgreSQL 的时间最长。我所有的数据都保存在 Postgres 中。我最近研究了 redis,它有很多强大的功能,否则在 Django (python) 中需要几行代码才能完成。只要运行它的机器不停机,Redis 数据就会持久存在,您可以将其配置为每 1000 个键或每 5 分钟左右将存储到磁盘的数据写入磁盘,具体取决于您的选择。

Redis 会做一个很好的缓存,它肯定会取代我在 python 中编写的许多功能(投票用户的帖子,查看他们的朋友列表等......)。但我担心的是,所有这些数据都需要翻译成 postgres。我不相信将这些数据存储在 redis 中。我将 redis 视为一种用于快速检索信息的临时存储解决方案。它非常快,这远远超过对 postgres 进行重复查询。

我假设我可以在技术上将redis数据写入数据库的唯一方法是将我从redis的'get'查询中获得的任何内容通过Django保存到postgres数据库中。

这是我能想到的唯一解决方案。你知道这个问题的任何其他解决方案吗?

4

2 回答 2

31

Redis 越来越多地用作缓存层,很像更复杂的 memcached,在这个角色中非常有用。您通常将 Redis 用作您想要持久的数据的直写缓存,以及您可能想要累积然后批量写入的数据的回写(您可以承受丢失最近的数据)。

PostgreSQLLISTENNOTIFY系统对于选择性缓存失效非常有用,当它们在 PostgreSQL 中更新时,您可以从 Redis 中清除记录。

为了将它与 PostgreSQL 结合,您会发现Andrew Dunstain 和 Dave Page 正在研究的 Redis 外部数据包装器提供程序非常有趣。

我不知道有任何工具可以使 Redis 成为 PostgreSQL 的透明回写缓存。他们的数据模型可能差异太大,无法正常工作。通常,您将更改写入 PostgreSQL 并使用缓存管理器工作程序侦听/通知使它们的 Redis 缓存条目无效,或者您在 Redis 中对更改进行排队,然后让您的应用程序将它们读出并以块的形式将它们写入 Pg。

于 2013-06-11T06:03:05.060 回答
1

Redis 如果配置为持久化,则通过快照和一种称为 AOF 的 WAL 实现持久化。许多人将其用作主数据存储。 https://redis.io/topics/persistence

如果一个人指的是 Redis 兼容(resp 协议)数据存储的更大世界,许多不限于内存存储: https ://keydb.dev/ http://ssdb.io/ 等等...


于 2019-11-10T14:05:50.160 回答