2016-09-22 3 views
0

各スレッドは別々のキャッシュを維持しているようです。自分のDjangoオブジェクトを使って、複数のスレッドでデータベースキャッシュを共有するだけでいいですか?これを行うためのネガティブな点は何ですか?Djangoデータベースのキャッシュが複数のスレッドで共有されないのはなぜですか?

私が直面しています問題はこれです:私は次の要求を処理している間、私はキャッシュから取得要求

  • を処理している間、私はキャッシュに保存するデータベースキャッシュ
  • を使用しています

    私はそれがキャッシュにあると思っていますが、そこにはありません。スレッドidentを印刷することによって、スレッドが別のスレッドであることがわかります。同じスレッドがキャッシュヒットを取得しますが、別のスレッドがキャッシュミスを取得します。

    これはデータベースキャッシュのバックエンドでは起こりそうにありません。

  • 答えて

    0

    これは、locememキャッシュバックエンドを使用する場合にのみ該当します。あなたは生産ではいけません。ファイルシステムであろうとdbキャッシュであろうと、memcachedやredisのような専用のキャッシュバックエンドであろうと、適切なキャッシュを使用してください。

    +0

    ドキュメンテーションから:「スレッド安全性を提供するために、各スレッドに対してキャッシュバックエンドの別のインスタンスが返されます。私はデバッグ中にこれが実際に正しいことを確認しました。 – sureshvv

    +0

    はい、それはあなたが求めていたようではありませんでした。各インスタンスは通常、同じストアを指しているため、同じデータにアクセスできます。 –

    +0

    データベースキャッシュを使用して読み書きするにはロックを使用する必要がありますか?私はまだそれをやっていません。それが私の問題だろうか? – sureshvv

    関連する問題