2017-06-15 2 views
0

現在、Celeryのブローカとして使用されているredisのdjangoアプリがあります。それ以外は何もありません。Django Redisへの移動ルックアップテーブル

これをさらにルックアップキャッシュに利用したいと思います。

私のデータベースには、検索のために頻繁に使用されるテーブルがありました。同じ例では、米国の郵便番号と都市/州名のマッピング、または時間が経つにつれて実際に変更される可能性のあるルックアップが、自分のアプリケーションにとって重要だとします。

私の質問は次のとおりです。サーバの起動(私の場合は、Gunicorn)一度

  1. 、どのように私は一回のRedisにデータベーステーブルからデータをロードします。つまり、どこで、どのようにしてこの一回の呼び出しを行うのですか?そのような "onload"呼び出しのためのdjangoフレームワークの場所はありますか?または、データベースから提供される最初の要求に応じてレイジースタイルをトリガーするだけですが、テーブル全体のRedisロードをトリガーしますか?

  2. アップデートはどうですか?データベーステーブルが何らかの形で更新された場合(行の削除、行の更新、行の追加など)、そのレディス表現を更新するにはどうすればよいですか?

  3. これまでのベストプラクティスまたはライブラリは、すでにそれに合わせて作られていますか?

答えて

1

は、どのように(これらの回答からのみurls.pyが私のために働いていた)私は一度あなたが見つけることができる1時間の負荷に対する負荷が

hereにお答えください。しかし私は別のシナリオを好む。 manage commandを作成し、このスクリプトをGunicornを起動するコマンドに追加します。たとえば、systemdを使用している場合、これをサービスサービス設定に追加できます。それは本当にあなたのデータベースに依存して何についての最新情報

をコマンドを追加し、urls.py

からそれを呼び出すようにあなたはまた、これらを組み合わせることができます。たとえば、postgresqlを使用する場合は、更新/挿入/削除のトリガーと外部表を作成することができます。また、djangoはsignalメカニズムを持っていますので、これをdjangoでも実装できます。カスタムラッパーも作成できます。このラッパーでは、操作+ redisとの同期を実装します。そしてあなたはラッパーの代わりにラッパーを呼ぶでしょう。しかし、私は最初のシナリオを好む。

正確に に向けたベストプラクティスまたはライブラリがありますか?

ご迷惑をおかけして申し訳ございません。

関連する問題