redis数据库如何用Django框架缓存数据

时间:2022-02-20 04:25:19

---恢复内容开始---

  一.python 使用redis

   1.1 安装 pip install redis 

    测试有一些基本的数据类型

import redis
# redis 是一个缓存数据库

# r = redis.Redis(host=‘127.0.0.1‘, port=6379)
# 一般采用host与redis 可以不用配置, 用db来选择操作的数据库

# 如:
r = redis.Redis(db=11)
# r.set() 设置值 操作字符串

r.set(name,coco)
print(r.get(name))

# 设置过期时间
# r.setex(‘age‘, 5, ‘18‘)  # 不能一置打开代开 会重新设置
print(r.get(age)) # 5 秒后None

   hset() 哈希字典

# hset
# print(r.get(‘age‘)) # 5 秒后None
r.hset(student,name,yye)  # name key value 哈希字典的设置值和取值方法
print(r.hget(student,name))

  zdd() >>>zset() sorted set() 有序集合

# zadd()
# r.zadd(‘mayup‘,{‘koko‘:100,‘coco‘:60,‘yye‘:80})  # 有序集合
# print(r.zrange(‘mayup‘,0,0))  # 正向取值 [b‘coco‘]
# print(r.zrevrange(‘mayup‘,0,0))  # 取得最后一个 [b‘koko‘]

 

  1.2 redis 建立连接池

    (1)第一种方式 

# redis 原生的建立连接池(支持并发)
pool = redis.ConnectionPool(db=12,max_connections=100)
rp = redis.Redis(connection_pool=pool)
rp.set(name,koko)
print(rp.get(name))

    (2) django 使用redis缓存 

  

# 导入测试环境
import os
import django

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "luffyapi.settings.dev")
django.setup()

from user import models

user = models.User.objects.first()
# 测试子自定义序列化类
from rest_framework.serializers import ModelSerializer


class UserModelSerializer(ModelSerializer):
    class Meta:
        model = models.User
        fields = [username, password]


user_data = UserModelSerializer(user).data
# print(user_data)
# 原生redis
# import redis
# r = redis.Redis()
# r.set(user.usernaem,user_data)

from django.core.cache import cache  # >>> 
# cache.set()  # vdef set(self, name, value, ex=None, px=None, nx=False, xx=False):
# cache.get()  #  cache 是一个高速缓存器
cache.set(user.username,user_data,5)
res = cache.get(user.username)
print(res, type(res))
# {‘username‘: ‘admin‘, ‘password‘: ‘pbkdf2_sha256$1000dcKSQ=‘}
# <class ‘dict‘>  序列化成字典的格式进行存储

# 如和进行数据的存储 现在是默认存储到mameche 需要进行配置存储到我们redis 数据库的缓存
# cache比原生的redis 的好处: (1)djano 和drf份序列化结构
# (2) 如果是普通的json格式 我们就序列化成json格式的字符串
# (3)如果是图片的我们通过图片格式度成二进制

   settings  >>>dev开发环境下进行配置

# import logging  测试的话导入一下
# logging.getLogger(‘django‘)

 # 配制redis 缓存是用:需要额外的安装django-redis
 # 步骤: (1) 将缓存存储位置配置到redis 中

CACHES = {
    default:{
        BACKEND:django_redis.cache.RedisCache,
        LOCATION:redis://127.0.0.1:6379/10,
        OPTIONS:{
            CLIENT_CLASS:django_redis.client.DefaultClient,
            CONNECTION_POOL_KWARGS:{max_connections:100}

        }
    }

}

 

 

  

---恢复内容结束---