2012-02-05 83 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