Redis可以写出像PostgreSQL这样的数据库吗?

时间:2013-06-10 21:16:53

标签: python django postgresql redis redis-cache

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

Redis会创建一个很好的缓存,它肯定会取代我在python中编写的很多函数(投票给用户的帖子,查看朋友列表等等)。但我担心的是,所有这些数据都需要转化为postgres。我不相信将这些数据存储在redis中。我认为redis是一种临时存储解决方案,可以快速检索信息。它非常快,远远超过对postgres进行重复查询。

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

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

2 个答案:

答案 0 :(得分:18)

Redis越来越多地被用作缓存层,就像更复杂的memcached一样,并且在这个角色中非常有用。您通常将Redis用作直写缓存以用于您想要持久的数据,并将回写用于您可能想要累积的数据然后批量写入(您可以在哪里使用)可以丢失最近的数据。)

PostgreSQL的LISTENNOTIFY系统对于选择性高速缓存失效非常有用,可让您在PostgreSQL中更新时从Redis中清除记录。

为了将它与PostgreSQL相结合,你会发现the Redis foreign data wrapper provider that Andrew Dunstain and Dave Page are working on非常有趣。

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

答案 1 :(得分:0)

如果通过配置,Redis是持久的,无论是通过快照还是一种称为AOF的WAL。大量的人使用它作为主要数据存储。 https://redis.io/topics/persistence

如果要指的是Redis兼容(resp协议)数据存储的更广阔世界,则许多存储不限于内存中存储: https://keydb.dev/ http://ssdb.io/ 还有更多...