Postgres Hstore vs. Redis - 性能明智

jri*_*iro 24 postgresql performance redis key-value-store node.js

读到了 Postgres中的HStores,也是Redis提供的东西.

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

  • 性能方面,Postgres HStore与Redis相当吗?

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

另一个限制是,我们需要使用已经在PostgreSQL中的数据并将其与活动会话(我们不确定此时存储在哪里,如果在Redis或PostgreSQL中)相结合.

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

谢谢!

Mat*_*ant 27

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

Redis似乎是您的会话数据的一个很好的选择,或者甚至存储在cookie或客户端Javascript中.但是,如果您在每个请求中都需要数据库中的数据,那么它可能甚至不值得涉及Redis.这在很大程度上取决于您的应用.

  • 只是一点点评论:如果你不需要Postgres的可靠性保证(发生崩溃时丢失交易的风险但是在发生崩溃时没有数据损坏的风险)并且速度对你来说更重要,你可能想要测试关闭postgres中的'synchronous_commit'设置.这可能有助于大量的小写,但对读取没有帮助. (4认同)
  • Redis有事务,但保证整个事务处理操作集都致力于内存.还有用于将数据写入到磁盘上的频率的配置选项. (3认同)

Pav*_*ule 6

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

对于 9.1 之前的版本,基于持久媒体参数的每秒事务物理限制。对于会话管理,您通常不需要 MGA(因为没有冲突),这意味着 MGA 是开销,没有 MGA 和 ACID 的数据库必须明显更快(10 或 100)。

我知道一个用例,其中 PostgreSQL 用于会话管理,而性能非常糟糕且不稳定——它是 eshop,大约有 10000 个活动会话。当会话管理移至 memcached 时,性能和稳定性显着提高。PostgreSQL 可能可以用于 100 个活动会话而没有问题。对于更高的数字,有更好的工具。

  • 您可以使用 memcache 而不是 redis 进行会话处理。它运行良好 https://github.com/elbart/node-memcache (2认同)