DjangoのキャッシュにRedisを使う!!django-redisの使い方とDjango4系での変更点

2022年1月14日Djangoの豆知識redis,キャッシュ

今回はDjangoのキャッシュにRedisを使う方法をまとめます。docker composeを使って、1. Django, 2. Postgresql, 3. Redisのコンテナを立てます。

Redisとは?

Redisとは、インメモリのデータストアのことで今回はこれをキャッシュで利用します。とりあえずとても高速です。

バージョン

重要:Django3系と、4系でRedisの設定方法が異なります!

正確には、Django4系から新たにサポートされた機能のため、3系の設定方法は4系でも使えますが、4系の設定方法は3系では使えません。

よってここからは1.Django3系の方法2.Django4系の方法に分けて記述します。

python 3.9

1. Django3系の方法
Django==3.2
psycopg2==2.9.3
django-redis==5.2.0


2. Django4系の方法
Django==4.0
psycopg2==2.9.3
redis==4.1.0

サンプルコード

Githubに3系の場合4系の場合とおいてあります。

1.Django3のredis設定方法

Django3の場合はdjango-redisというライブラリを使います。

ライブラリをインストールした後、settings.pyを↓のように追記します。

# ↑略

# Django3の時のredisの設定
CACHES = {
    'default': {
        'BACKEND': 'django_redis.cache.RedisCache',
        'LOCATION': 'redis://redis:6379', # ここを変える
        'OPTIONS': {
            'CLIENT_CLASS': 'django_redis.client.DefaultClient'
        }
    }
}

# ↓略

今回はdocker composeを使っているのでredis://redis:6379と書いていますが、そうでない場合は、LOCATIONの部分に、Redisサーバーのエンドポイントを指定すれば完了です。

2.Django4のredis設定方法

Django4ではredis-pyという薄いライブラリを使います。

redis-pyをインストールしたらsettings.pyに↓のように追記します。

# ↑略

# Django4の時のredisの設定
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.redis.RedisCache',
        'LOCATION': 'redis://redis:6379', # ここを変える
    }
}

# ↓略

動作確認

かなり早く、msならぬμsくらいでレスポンスが返って来るときもあります。

参考

Django3、django-redis

Django4公式