接口緩存----把數據放在redis數據庫中,減少訪問量
針對訪問量大,且數據較固定的接口,建議建立接口緩存,建立了緩存之后,提取數據就不再走數據庫,直接從緩存中提取。同時也減少了數據庫壓力
比如輪播圖接口,每刷新一下首頁就會訪問一下輪播圖接口拿去數據,這時建立接口緩存來處理就可以減輕數據庫壓力
視圖模塊:home/views.py
from rest_framework.generics import ListAPIView
from . import models
from . import serializers
from django.conf import settings
from django.core.cache import cache
from rest_framework.response import Response
class BannerListAPIView(ListAPIView):
queryset = models.Banner.objects.filter(is_delete=False, is_show=True).order_by('-order')[:settings.BANNER_COUNT]
serializer_class = serializers.BannerModelSerializer
#訪問量大且數據一段時間內較為固定的接口,可以建立接口緩存
#1、數據從緩存中拿,有直接返回,沒有就查詢數據庫
#2、查詢數據庫的數據返回給前台,同時將數據建立緩存
def get(self, request, *args, **kwargs): # 群查
banner_list = cache.get('banner_list') #緩存有,走緩存,沒有就走數據庫
if not banner_list:
# 走數據庫拿數據
response = self.list(request, *args, *kwargs)
# 保存數據到緩存
# response.data不是json數據,是drf中自定義的ReturnList類
cache.set('banner_list', response.data) # 緩存不設置過期時間,更新任務交給celery異步任務框架
return response
return Response(banner_list)