25

私は PostgreSQL を最も長い間使用してきました。私のデータはすべて Postgres 内にあります。私は最近、redis を調べましたが、そうでなければ Django (python) で数行しかかからない強力な機能がたくさんあります。Redis データは、それが実行されているマシンがダウンしない限り永続的であり、選択に応じて、保存しているデータを 1000 キーごとまたは 5 分ごとなどにディスクに書き出すように構成できます。

Redis は優れたキャッシュを作成し、Python で記述した多くの関数 (ユーザーの投稿への投票、友人リストの表示など) を確実に置き換えるでしょう。しかし、私の懸念は、このすべてのデータを何らかの方法で postgres に変換する必要があることです。このデータを redis に保存することは信用できません。redis は、情報をすばやく取得するための一時的なストレージ ソリューションであると考えています。これは非常に高速で、postgres に対して繰り返しクエリを実行するよりもはるかに優れています。

Redis データをデータベースに技術的に書き込むことができる唯一の方法は、django を介して、redis から postgres データベースへの「get」クエリから取得したものを save() することだと思います。

それが私が考えることができる唯一の解決策です。この問題に対する他の解決策を知っていますか?

4

2 に答える 2

31

Redis は、より洗練された memcached のように、キャッシング レイヤーとしてますます使用されており、この役割で非常に役立ちます。通常、耐久性が必要なデータのライトスルーキャッシュとして Redis を使用し、蓄積したいデータのライトバックとバッチ書き込み (最近のデータを失う余裕がある場合) として使用します。

PostgreSQLLISTENNOTIFYシステムは、選択的なキャッシュの無効化を行うのに非常に便利で、PostgreSQL でレコードが更新されたときに Redis からレコードをパージできます。

PostgreSQL と組み合わせるには、Andrew Dunstain と Dave Page が取り組んでいる Redis 外部データ ラッパー プロバイダーが非常に興味深いことがわかります。

Redis を PostgreSQL の透過的なライトバック キャッシュにするツールを私は知りません。彼らのデータ モデルは、これがうまく機能するにはおそらくあまりにも異なっています。通常、PostgreSQL に変更を書き込み、キャッシュ マネージャー ワーカーへのリッスン/通知を使用して Redis キャッシュ エントリを無効にするか、Redis で変更をキューに入れ、アプリにそれらを読み取らせてチャンクで Pg に書き込みます。

于 2013-06-11T06:03:05.060 に答える