2012-02-05 88 views
21

I read about Postgres中的HStore也由Redis提供。Postgres Hstore vs. Redis - 性能明智

我们的应用程序是用NodeJS编写的。两个问题:

  • 性能方面,是Postgres HStore媲美Redis吗?

  • 会话存储,你会推荐什么--Redis或Postgres与其他类型的数据类型(如HStore,或者甚至是通常的关系表)?一个选项与另一个选项有多差?

另一个限制是,我们将需要使用已在PostgreSQL里的数据,并与活动会话结合起来(我们不知道在哪里存储在这一点上,如果在Redis的或PostgreSQL )。

从我们已经阅读的内容中,我们已经指出要使用Redis作为会话管理器,但是由于PostgreSQL约束,我们不确定如何结合两者以及可能出现的性能问题。

谢谢!

回答

22

Redis将比Postgres更快,因为Pg为您的数据提供了可靠性保证(当事务提交时,它保证在磁盘上),而Redis有一个写入磁盘的概念,不应该用于关键数据。

对于会话数据来说,Redis看起来是一个很好的选择,或者甚至存储在cookie或客户端Javascript中。但是,如果您需要每个请求中的数据库数据,那么它可能不值得涉及Redis。它非常依赖于你的应用程序。

+3

只需稍加评论:如果您不需要Postgres的可靠性保证(发生崩溃时丢失交易的风险,但在崩溃的情况下不存在数据损坏的风险)并且速度对您更重要,您可能需要测试关闭postgres中的'synchronous_commit'设置。这可能有助于很多小写,但不会帮助读取。 – stereoscott 2012-09-19 20:06:52

+3

Redis有事务处理,但保证是整个事务处理集合致力于内存。数据写入磁盘的频率也有配置选项。 – Evgeny 2013-03-03 16:17:05

+0

我终于明白,Redis是一个全新的数据库全新概念。所以很多人 - 比如我 - 在第一时刻不理解它。当你习惯使用Postgres时,确实需要时间来抓住Redis。这是一个真正的当代数据库。说它只是一个cookie /会话存储低估了Redis。所以很多人不知道就会发表意见。我们在非网络项目中使用它作为数百万数据的数据库,并且它很好地完成了这项工作!说到可靠性,世界上没有任何软件是100%可靠的,甚至连Postgres都没有。 – 1111161171159459134 2015-09-15 21:59:19

3

使用PostgreSQL作为会话管理器通常是个坏主意。

对于9.1以上的版本,基于持久性介质参数,每秒的事务数量限制为每秒。对于会话管理,通常不需要MGA(因为没有碰撞),这意味着MGA开销较大,没有MGA和ACID的数据库必须显着更快(10或100)。

我知道一个用例,其中PostgreSQL用于会话管理,并且Performance非常可怕并且不稳定 - 这是eshop大约有10000个生活会话。当会话管理转移到memcached时,性能和稳定性显着增加。 PostgreSQL可以用于100个生活会议,而且没有问题。对于更高的数字有更好的工具。

+0

谢谢!我们实际上倾向于redis,但是,如上所述,我们不确定如何查询postgres以在redis中从活动用户返回信息......任何提示? – jribeiro 2012-02-05 21:36:11

+2

您可以使用memcache而不是redis来进行会话处理。它工作得很好https://github.com/elbart/node-memcache – 2012-02-06 17:19:14

+0

@MarekTuchalski嗨!对不起,延迟并感谢您的回答。我的问题仍然存在......我如何将数据从memcached连接到postgres?我将不得不迭代所有结果并将它们传递给postgres吧?这听起来像痛苦... – jribeiro 2012-02-14 17:50:25