Djangoキャッシュ
9152 ワード
公式ドキュメント
キャッシュバックエンドをRedisに設定
DjangoのキャッシュをRedisに設定
1.インストール
hiredisはCで書かれたRedisクライアントであり、彼の解析器はdjango-redisで使用できます.
2.settings.pyで次のように設定します.
Redisリファレンスhttp://django-redis-chs.readthedocs.io/zh_CN/latest/
3.使用:
キー値ペアの設定
キー値ペアの取得
TTL値取得(タイムアウト時間)
キャッシュセッション
キャッシュビュー
ビュー全体をキャッシュ
キャッシュビュー内のリクエストメソッドの内容
pyinxiangcom/25594833/ENResource/p763)]
キャッシュテンプレートクリップ
[外部チェーン画像の転送に失敗しました.ソース局には盗難防止チェーンのメカニズムがある可能性があります.画像を保存して直接アップロードすることをお勧めします(img-qlCZwrID-161458414968)(evernotecid://BBD579E0-7127-4377-8E81-47BEA574FA91/appyinxiangcom/25594833/ENResource/p765)]
キャッシュAPIの使用
django.core.cache.cache
ショートカットとして、デフォルトのキャッシュはdjangoを通過することができる.core.cache.Cacheリファレンス:
基本的な使い方/基本的なインタフェースは:
cache.set(key, value, timeout=DEFAULT_TIMEOUT, version=None)¶
cache.set(‘my_key’, ‘hello, world!’, 30) cache.get(key, default=None, version=None)¶
cache.get(‘my_key’) ‘hello, world!’ keyは文字列で、valueはpicklable形式のPythonオブジェクトを任意に使用できます.
timeoutパラメータはオプションで、デフォルトはCACHESの対応するバックエンドのtimeoutパラメータです.キャッシュに値が存在する秒数です.timeoutがNoneに設定されている場合、永続的にキャッシュされます.timeoutが0の場合、値はキャッシュされません.
オブジェクトがキャッシュにない場合、cache.get()はNoneを返します.
Wait 30 seconds for ‘my_key’ to expire…
cache.get(‘my_key’)NoneキャッシュにNoneの値を格納しないことをお勧めします.格納したNoneの値がキャッシュヒットで返されたNoneの値か分からないからです.
cache.get()はデフォルトパラメータを持つことができます.オブジェクトがキャッシュに存在しない場合は、指定した値が返されます.
cache.get(‘my_key’, ‘has expired’) ‘has expired’ cache.add(key,value,timeout=DEFAULT_TIMEOUT,version=None)/キーが存在しない場合、add()メソッドを使用してキーを追加できます.set()と同じパラメータですが、指定したキーがすでに存在する場合はキャッシュの更新は試みられません.
cache.set(‘add_key’, ‘Initial value’) cache.add(‘add_key’, ‘New value’) cache.get(‘add_key’)‘Initial value’add()で格納されている値がキャッシュにあるかどうかを知りたい場合は、戻り値をチェックします.値が保存されている場合はTrue、そうでない場合はFalseを返します.
cache.get_or_set(key,default,timeout=DEFAULT_TIMEOUT,version=None)/キー値を取得したい場合や、キーがキャッシュに存在しない場合に値を設定する場合はget_or_set()メソッド.get()と同じパラメータがありますが、デフォルトでは、単純に戻るのではなく、そのキーに新しいキャッシュ値を設定します.
cache.get(‘my_new_key’) # returns None cache.get_or_set(‘my_new_key’,‘my new value’,100)‘my new value’呼び出し可能な値をデフォルト値として渡すこともできます.
import datetime cache.get_or_set(‘some-timestamp-key’, datetime.datetime.now) datetime.datetime(2014, 12, 11, 0, 15, 49, 457920) cache.get_many(keys,version=None)/ここにもget_many()インタフェースは、リクエストしたキーがキャッシュに実際に存在し(期限切れではありません):
cache.set(‘a’, 1) cache.set(‘b’, 2) cache.set(‘c’, 3) cache.get_many([‘a’, ‘b’, ‘c’]) {‘a’: 1, ‘b’: 2, ‘c’: 3} cache.set_many(dict,timeout)/set_の使用many()キー値ペアを渡す辞書は、複数の値をより効果的に設定できます.
cache.set_many({‘a’: 1, ‘b’: 2, ‘c’: 3}) cache.get_many([‘a’,‘b’,‘c’]){‘a’:1,‘b’:2,‘c’:3}cacheに似ている.set(),set_many()には、オプションのtimeoutパラメータがあります.
サポートされているバックエンド(memcached)では、set_many()は挿入できないキーリストを返します.
cache.delete(key,version=None)/delete()で表示されるキーを削除できます.これは、特定のオブジェクトキャッシュをクリアするための簡単な方法です.
キャッシュバックエンドをRedisに設定
DjangoのキャッシュをRedisに設定
1.インストール
pip install django-redis Hiredis
hiredisはCで書かれたRedisクライアントであり、彼の解析器はdjango-redisで使用できます.
2.settings.pyで次のように設定します.
Redisリファレンスhttp://django-redis-chs.readthedocs.io/zh_CN/latest/
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://172.16.153.130:6379/1",
"OPTIONS": {
"CONNECTION_POOL_KWARGS": {
"max_connections": 100}, # , 100
"PARSER_CLASS": "redis.connection.HiredisParser", # pip install Hiredis
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"PASSWORD": "", #
}
}
}
3.使用:
from django.core.cache import cache
キー値ペアの設定
cache.set("foo", "value", timeout=10) # foo, value, 10
キー値ペアの取得
cache.get('foo')
TTL値取得(タイムアウト時間)
cache.ttl('foo')
キャッシュセッション
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"
キャッシュビュー
ビュー全体をキャッシュ
from django.views.decorators.cache import cache_page
@cache_page(60 * 15)
def my_view(request):
...
60 * 15
は60秒に15を乗じた900秒ですキャッシュビュー内のリクエストメソッドの内容
pyinxiangcom/25594833/ENResource/p763)]
キャッシュテンプレートクリップ
[外部チェーン画像の転送に失敗しました.ソース局には盗難防止チェーンのメカニズムがある可能性があります.画像を保存して直接アップロードすることをお勧めします(img-qlCZwrID-161458414968)(evernotecid://BBD579E0-7127-4377-8E81-47BEA574FA91/appyinxiangcom/25594833/ENResource/p765)]
キャッシュAPIの使用
django.core.cache.cache
ショートカットとして、デフォルトのキャッシュはdjangoを通過することができる.core.cache.Cacheリファレンス:
>>> from django.core.cache import cache
基本的な使い方/基本的なインタフェースは:
cache.set(key, value, timeout=DEFAULT_TIMEOUT, version=None)¶
cache.set(‘my_key’, ‘hello, world!’, 30) cache.get(key, default=None, version=None)¶
cache.get(‘my_key’) ‘hello, world!’ keyは文字列で、valueはpicklable形式のPythonオブジェクトを任意に使用できます.
timeoutパラメータはオプションで、デフォルトはCACHESの対応するバックエンドのtimeoutパラメータです.キャッシュに値が存在する秒数です.timeoutがNoneに設定されている場合、永続的にキャッシュされます.timeoutが0の場合、値はキャッシュされません.
オブジェクトがキャッシュにない場合、cache.get()はNoneを返します.
Wait 30 seconds for ‘my_key’ to expire…
cache.get(‘my_key’)NoneキャッシュにNoneの値を格納しないことをお勧めします.格納したNoneの値がキャッシュヒットで返されたNoneの値か分からないからです.
cache.get()はデフォルトパラメータを持つことができます.オブジェクトがキャッシュに存在しない場合は、指定した値が返されます.
cache.get(‘my_key’, ‘has expired’) ‘has expired’ cache.add(key,value,timeout=DEFAULT_TIMEOUT,version=None)/キーが存在しない場合、add()メソッドを使用してキーを追加できます.set()と同じパラメータですが、指定したキーがすでに存在する場合はキャッシュの更新は試みられません.
cache.set(‘add_key’, ‘Initial value’) cache.add(‘add_key’, ‘New value’) cache.get(‘add_key’)‘Initial value’add()で格納されている値がキャッシュにあるかどうかを知りたい場合は、戻り値をチェックします.値が保存されている場合はTrue、そうでない場合はFalseを返します.
cache.get_or_set(key,default,timeout=DEFAULT_TIMEOUT,version=None)/キー値を取得したい場合や、キーがキャッシュに存在しない場合に値を設定する場合はget_or_set()メソッド.get()と同じパラメータがありますが、デフォルトでは、単純に戻るのではなく、そのキーに新しいキャッシュ値を設定します.
cache.get(‘my_new_key’) # returns None cache.get_or_set(‘my_new_key’,‘my new value’,100)‘my new value’呼び出し可能な値をデフォルト値として渡すこともできます.
import datetime cache.get_or_set(‘some-timestamp-key’, datetime.datetime.now) datetime.datetime(2014, 12, 11, 0, 15, 49, 457920) cache.get_many(keys,version=None)/ここにもget_many()インタフェースは、リクエストしたキーがキャッシュに実際に存在し(期限切れではありません):
cache.set(‘a’, 1) cache.set(‘b’, 2) cache.set(‘c’, 3) cache.get_many([‘a’, ‘b’, ‘c’]) {‘a’: 1, ‘b’: 2, ‘c’: 3} cache.set_many(dict,timeout)/set_の使用many()キー値ペアを渡す辞書は、複数の値をより効果的に設定できます.
cache.set_many({‘a’: 1, ‘b’: 2, ‘c’: 3}) cache.get_many([‘a’,‘b’,‘c’]){‘a’:1,‘b’:2,‘c’:3}cacheに似ている.set(),set_many()には、オプションのtimeoutパラメータがあります.
サポートされているバックエンド(memcached)では、set_many()は挿入できないキーリストを返します.
cache.delete(key,version=None)/delete()で表示されるキーを削除できます.これは、特定のオブジェクトキャッシュをクリアするための簡単な方法です.
>>> cache.delete('a')
cache.delete_many(keys, version=None)¶
, delete_many() 。
>>> cache.delete_many(['a', 'b', 'c'])
cache.clear()¶
, , cache.clear()。 ,clear() , 。
>>> cache.clear()
cache.touch(key, timeout=DEFAULT_TIMEOUT, version=None)¶
New in Django 2.1:
cache.touch() 。 , 10 :
>>> cache.touch('a', 10)
True
,timeout , CACHES TIMEOUT 。
touch(), True, False。
cache.incr(key, delta=1, version=None)¶
cache.decr(key, delta=1, version=None)¶
incr() decr() 。 , 1。 / / 。 , ValueError 。
>>> cache.set('num', 1)
>>> cache.incr('num')
2
>>> cache.incr('num', 10)
12
>>> cache.decr('num')
11
>>> cache.decr('num', 5)
6