LoginSignup
6
7

More than 3 years have passed since last update.

DjangoのキャッシュバックエンドをRedisにする

Posted at

はじめに

筆者自身が、NoSQL、cacheの知識が乏しいため、この記事の対象者は以下のような方を想定しています。

  • windowsユーザー
  • NoSQL初学者
  • キャッシュ初学者
  • Djnagoプロジェクトを作成済みで、キャッシュを使いたい方

この記事のメインは、Djangoのキャッシュバックエンドで、Redisを使うことなので、
Redisのインストールは完了している前提です。
Redisのインストールについては、ほぼすっ飛ばします!

Redisのインストール

1.windows向けのRedisのmsiファイルをダウンロードする。

https://github.com/microsoftarchive/redis/releases/tag/win-3.0.504 から
「Redis-x64-3.0.504.msi」をダウンロードして、起動する。

2.インストーラが起動したら、どんどんNext。

インストーラの内容は普通のインストーラと同じです。笑

  • 規約同意
  • インストール先ディレクトリ
      →環境変数にpathを追加のチェックボックスがあるので、チェックを付けておくことのが無難。
  • 何番ポートを使用するか
      →デフォルトは「6379」。ファイアーウォールの規則に追加するかのチェックボックスがあるので、 個別で設定したくない場合は、チェックを入れることを推奨する。

3.一応インストール完了確認。

コマンドプロンプトを立ち上げて、以下のように入力し、Enterを押下する。

 > redis-cli.exe

その後、プロンプトが以下のようになれば、インストール完了。

 127.0.0.1:6379> 

django-redisをインストールする

1.pipでdjango-redisをインストールする。

 > pip install django-redis 

2.djangoプロジェクトのsettings.pyにcacheの設定を追加する。

settings.pyに以下の記述を追加する。

settings.py
  CACHES = {
    'default': {
        'BACKEND': 'django_redis.cache.RedisCache',
        'LOCATION': 'redis://localhost:6379/',
        'OPTIONS': {
            'CLIENT_CLASS': 'django_redis.client.DefaultClient'
        }
    }
  }

*参考までに、デフォルトのCASHESの設定はこちら

django.conf.global_settings.py
  CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
    }
  }

3.今回は、テンプレートの一部をキャッシュする。

現在時刻をキャッシュするのがわかりやすかったので、現在時刻をキャッシュして確認する。
参考:キャッシュを使う

test.html
{% load cache %}
  <h2>こっちはキャッシュせず</h2>
  <span>{{ now }}</span>
{% cache 240 now_cache%}
  <h2>ここはキャッシュする</h2>
  <span>{{ now }}</span>
{% endcache %}

↓表示画面
image.png

ちなみに、redis-cliで参照すると、
htmlがエスケープされて文字列として格納されていることが確認できる。
image.png

キャッシュできる範囲はview単位や、サイト単位などさまざまなので、
参考サイトの「キャッシュを使う」を参考にしてほしい。

さいごに

 RDBばかり使っていたせいで、Redisの値の格納の仕方に違和感を感じてしまう。
 データベース名は?テーブル名は?となるが、そこがKVS(Key Value Store)の特徴といえよう。
 柔軟な使用が見込めそう。
 
 ○謎の宣言
  ページのキャッシュなどを活用して、レスポンスの早いwebページの作成を心掛けたい。

参考サイト

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7