django中使用redis緩存


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緩存增加該接口的調用次數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM