django_redis
下载
>: pip install django-redis
说明
django连接django_redis后会顶替原memcache数据库
django使用django_redis缓存数据库是通过内存管理来操作,所以需要导入django的内存管理cache
补充:
原生redis不能存储drf序列化的结果,因为其结果不是字符串类型,所以使用django_redis
可以将django_redis理解为是redis的辅助工具,可以将drf序列化后的结果存入redis库中
补充知识: django内存管理
from django.core.cache import cache # 内存中设置值 cache.set(key, value, exp) # 取值 cache.get(key)
注:默认操作的是django的memcache内存数据库
使用
配置: settings/dev.py
# 缓存配置 - redis存储:依赖 django-redis CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/7", # 连入指定数据库 这里连接的是7号数据库 "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", "CONNECTION_POOL_KWARGS": {"max_connections": 100} # 最大连接数 } } }
import os, django os.environ.setdefault("DJANGO_SETTINGS_MODULE", "luffyapi.settings.dev") django.setup() from django.core.cache import cache from user.models import User from rest_framework.serializers import ModelSerializer class UserModelSerializer(ModelSerializer): class Meta: model = User fields = ['username', 'password'] # 获取用户对象 user_obj = User.objects.all().first() # 序列化 user_data = UserModelSerializer(user_obj).data print(user_data) # {'username': 'admin', 'password': 'pbkdf2_sha256$0oIWjJbH98M$tbYJl1ja25oSXOxv8WW8I8fxsb3/tZgbtgcDhUbTyuQ='} print(type(user_data)) # <class 'rest_framework.utils.serializer_helpers.ReturnDict'> # 存入redis内存数据库 cache.set(user_obj.username, user_data , 10) # 参数: key, value, 过期时间/秒 # 取出
res = cache.get(user_obj.username) print(res) # {'username': 'admin', 'password': 'pbkdf2_sha256$IWjJbH98M$tbYJl1ja25oSXOxv8WW8I8fxsb3/tZgbtgcDhUbTyuQ='} print(type(res)) # <class 'dict'>