本网站可以通过分类标签帮助你快速筛选出你想看的文章,记住地址:www.Facec.cc

django中使用redis缓存

下载安装

pip install django-redis

setting配置

# 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)

# django   python   redis  

评论