アプリケーション内でクエリをキャッシュするために django-cache-machine を使用しようとしていますが、Redis をバックエンドとして使用したいと考えています。ドキュメントはこれを行う方法を実際には説明していませんが、リポジトリには Redis の参照がたくさんあるので、それが可能であると確信しています。私はそれを正しく行うことを確認したいので、これを構成した経験があり、さらに重要なことに、警告があるかどうかを知っている人がいるかどうか疑問に思っていますか?
2 に答える
設定セットで:
CACHE_MACHINE_USE_REDIS = True
REDIS_BACKEND = redis://127.0.0.1:6379?socket_timeout=0.1
https://github.com/jbalogh/django-cache-machine/blob/master/caching/invalidation.py#L187 https://github.com/jbalogh/django-cache-machine/blob/master/caching/invalidation .py#L213
私は、約 5,000 万件のレコードからテーブルを生成するレポート システムという自分のプロジェクトで少し経験があります。
データベースはMysqlで、設定とモデルを参考までに表示できました。
設定:
# cache machine
CACHES = {
'default': {
'BACKEND': 'caching.backends.memcached.MemcachedCache',
'LOCATION': [
'127.0.0.1:11211',
],
'PREFIX': 'report:',
},
}
CACHE_COUNT_TIMEOUT = 60 * 24 # one day
CACHE_EMPTY_QUERYSETS = True
モデル:
class App(**CachingMixin**, models.Model):
**objects = CachingManager()**
name = models.CharField(max_length=64,
default='')
cache-machine は query_set に対して正常に機能することに注意してください。filterとcount、query_set には適していません。注釈または集約。もちろん、最初に memcache クライアントを起動することを忘れないでください。
また、実行中に django*.log に cache-machine のログが表示され、キャッシュのヒットまたはミスを確認できます。