28

我在 Postgres 中读到了 Redis 提供的 HStores。

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

  • 在性能方面,Postgres HStore 可以与 Redis 相媲美吗?

  • 对于会话存储,您会推荐什么——Redis 或具有其他类型数据类型的 Postgres(如 HStore,甚至可能是通常的关系表)?一种选择与另一种相比有多糟糕?

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

从我们阅读的内容来看,有人指出我们使用 Redis 作为会话管理器,但由于 PostgreSQL 的限制,我们不确定如何将两者结合起来以及可能出现的性能问题。

谢谢!

4

2 回答 2

32

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

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

于 2012-02-06T15:28:08.703 回答
6

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

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

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

于 2012-02-05T21:30:13.203 回答