django_redis
Posted 得淼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,要安装>>>pip install 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, 过期时间/秒
#也可以写成
cache.setex('name',10,'bob')
取出
res = cache.get(user_obj.username)
print(res)
#{'username': 'admin', 'password': 'pbkdf2_sha256IWjJbH98MtbYJl1ja25oSXOxv8WW8I8fxsb3/tZgbtgcDhUbTyuQ='}
print(type(res)) # <class 'dict'>
以上是关于django_redis的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk EC2 与 Redis - 无法连接 - Django_Redis
django from django_redis import get_redis_connection后如何为该redis添加分布式锁呢?