DjangoのキャッシュバックエンドをRedisにする
はじめに
筆者自身が、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に以下の記述を追加する。
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://localhost:6379/',
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient'
}
}
}
*参考までに、デフォルトのCASHESの設定はこちら
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
}
}
3.今回は、テンプレートの一部をキャッシュする。
現在時刻をキャッシュするのがわかりやすかったので、現在時刻をキャッシュして確認する。
参考:キャッシュを使う
{% load cache %}
<h2>こっちはキャッシュせず</h2>
<span>{{ now }}</span>
{% cache 240 now_cache%}
<h2>ここはキャッシュする</h2>
<span>{{ now }}</span>
{% endcache %}
ちなみに、redis-cliで参照すると、
htmlがエスケープされて文字列として格納されていることが確認できる。
キャッシュできる範囲はview単位や、サイト単位などさまざまなので、
参考サイトの「キャッシュを使う」を参考にしてほしい。
さいごに
RDBばかり使っていたせいで、Redisの値の格納の仕方に違和感を感じてしまう。
データベース名は?テーブル名は?となるが、そこがKVS(Key Value Store)の特徴といえよう。
柔軟な使用が見込めそう。
○謎の宣言
ページのキャッシュなどを活用して、レスポンスの早いwebページの作成を心掛けたい。
参考サイト
Author And Source
この問題について(DjangoのキャッシュバックエンドをRedisにする), 我々は、より多くの情報をここで見つけました https://qiita.com/KAWAII/items/a53068687327ea2b1af9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .