• 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'>
    
  • 相关阅读:
    修改代码一般在测试服务器
    人很臭尽量往香里去做...
    救赎
    写的css十个错误
    如何debug看源代码
    办公室倒水
    程序和思维
    mousewheel.js 和scroll api
    drupal.behavior 和 document.ready 没有直接的关系
    revision in drupal
  • 原文地址:https://www.cnblogs.com/demiao/p/11979518.html
Copyright © 2020-2023  润新知