2014-08-27 28 views
1

我是Redis的新手,想知道如何一起使用Redis和PostgreSql - 特別是使用Redis僅用於Postgres中的LRU緩存。如何將Redis用於Postgresql的LRU緩存?

是否有任何連接Redis和Postgres的特殊配置?

然後,如果我想存儲的數據,我應該將其存儲在Postgres的分貝?如果是這樣,Redis做什麼?

謝謝。

+0

歡迎來到計算器。發佈前請閱讀[規則](http://stackoverflow.com/tour)。 – Igor 2014-08-27 14:01:05

回答

1

我想你誤會什麼存儲器存儲像Redis的或分佈式緩存能爲你做。

它們沒有連接到PostgreSQL或任何其他RDBMS。您的應用程序需要在兩個存儲中寫入數據:永久存儲(PostgreSQL,您的情況)和瞬態存儲(Redis)。

Redis和memcached不提供許多連接功能。爲了緩存,他們有一個相當簡單和不顯眼的行爲。管理緩存的智能部分在應用程序端,定義它是您的工作。

可以設想幾種策略:每次在RDBMS寫入時間

  • ,你在高速緩存寫入。每次你需要讀取數據時,首先在緩存中讀取。如果沒有找到,請從RDBMS中讀取並將其寫回緩存。

    每次在RDBMS寫入時間
  • ,你只是在緩存(刪除)數據無效。每次你需要讀取數據時,首先在緩存中讀取。如果沒有找到,請從RDBMS中讀取並將其寫回緩存。

棘手的部分是明確定義關於數據一致性(在RDBMS和緩存之間)的策略。

+0

感謝您的回覆,我需要在我的數據庫上編寫文件,將它們存儲在PostreSQL上並將索引保​​存爲redis上的值是個好主意? – Sisha 2014-08-30 05:06:20

+0

將文件存儲在RDBMS數據庫中是錯誤的想法。如果你需要存儲文件,爲什麼不使用文件系統?它們是爲此而設計的。例如,看看Hadoop HDFS,MapR,GlusterFS,Ceph等...... – 2014-08-30 11:35:26

+0

Postgres支持外部數據包裝。包括redis。我沒有使用它,但我有興趣。 https://wiki.postgresql.org/wiki/Foreign_data_wrappers – Anssi 2018-01-13 11:26:03

1

您可以使用Redis的作爲LRU緩存 - 我假設你正在使用的Redis的內存僅和PostgreSQL爲您的持久數據存儲操作。以下網址揭示了使用Redis的作爲LRU緩存更多的光線:

http://redis.io/topics/lru-cache 

您需要同時寫入的Redis和PostgreSQL(Redis的不會寫的PostgreSQL)。簡單地測試和比較Memcached等其他選項的結果是一個好主意,可以爲您的用例找出最佳方法。

此外,在Redis的LRU Cache實現是V2.6和V2.8之間的差異(不知道,如果2.8變化回遷到V2.6與否)。

如果您不熟悉,也可以將數據保存到Redis上,儘管您應該瞭解使用Redis作爲唯一數據存儲的內存限制(以及Redis對磁盤持久性的影響)。