django中使用redis有兩種方式:
- 通過
redis
模塊直接操作redis數據庫 - 通過
django-redis
模塊使用django的緩存cache【下文介紹內容】
下載安裝
pip install django-redis
配置緩存redis
將緩存存儲位置配置到redis中:settings.py
# settings.py
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache", # 使用django-redis的緩存
"LOCATION": "redis://127.0.0.1:6379/0", # redis數據庫的位置
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"CONNECTION_POOL_KWARGS": {"max_connections": 100},
"DECODE_RESPONSES": True, # 自動將byte轉成字符串
"PASSWORD": "", # 設置密碼
}
}
}
使用django緩存redis的兩種方式
django-redis的使用有兩種方式,第一種方式比較簡單直接操作緩存cache,
因為已經配置好了cache使用redis,可以直接通過cache存取數據,且支持python所有的數據類型(包括類對象等)。
# 第一種方式
from django.core.cache import cache
# 存放token,可以直接設置過期時間
cache.set('token', 'header.payload.signature', 300)
# 取出token
token = cache.get('token')
第二種方式是直接使用conn對象,體驗原生redis的操作方式
# 第二種方式
from django_redis import get_redis_connection
# 獲取redis的conn對象
conn = get_redis_connection('default')
# 通過conn對象操作redis
print(conn.hgetall('xxx'))
接口緩存
當某些接口的調用次數非常高時,可以使用接口緩存的方式,將接口返回的內容放到緩存中;
這樣當這個接口再次被調用時首先到緩存中找數據,如果緩存中有數據直接返回;如果緩存中沒有數據再去數據庫中查找需要的數據,並同時將數據放到緩存中。
這樣操作后,就避免了多次操作數據庫。
# 首頁輪播圖數據緩存到redis中
def list(self, request, *args, **kwargs):
# 1 先去緩存拿數據
banner_list=cache.get('banner_list')
if not banner_list:
# 緩存中沒有,再去數據庫拿;有緩存直接返回
response = super().list(request, *args, **kwargs)
# 同步到緩存
cache.set('banner_list', response.data, 60*60*24) # 加一天的過期時間
return response
return Response(data=banner_list)
統計接口的訪問頻次
利用緩存,統計網站中所有接口被調用的次數。
實現思路1:在中間件中通過請求url,使用redis緩存增加該接口的調用頻次;
實現思路2:在每個接口中,通過redis緩存增加該接口的調用次數。