Django缓存

django缓存

from django.core import cache

#设置缓存k:v,时间为分钟
cache.set('sms_%s' % mobile, code, 5)

old_code = cache.get(settings.SMS_CACHE_KEY %mobile)

缓存入门

# 访问量大且数据一段时间内较为固定的接口,可以左接口缓存
# 1)从缓存中拿,有直接返回,没有查询数据库
# 2)查询数据库的数据返回给前台,同时将数据建立缓存
class BannerListAPIView(ListAPIView):
    queryset = models.Banner.objects.filter(is_delete=False, is_show=True).order_by('-order')[:settings.BANNER_COUNT]
    serializer_class = serializers.BannerModelSerializer

    def get(self, request, *args, **kwargs):
        banner_list = cache.get('banner_list')
        if not banner_list:
            print('走数据库了')
            response = self.list(request, *args, **kwargs)
            # response.data不是json数据,是drf中的自定义ReturnList类
            cache.set('banner_list', response.data)  # 缓存不设过期时间,更新任务交给celery异步任务框架
            return response
        return Response(banner_list)
posted @ 2019-12-03 00:32  zx125  阅读(148)  评论(0编辑  收藏  举报