Django项目之Django-redis


(声明:本教程仅供本人学习使用,如有人使用该技术触犯法律与本人无关)
(如果有错误,还希望指出。共同进步)


【注】django-redis 中文文档


配置

在django_settings中添加如下代码

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        "TIMEOUT": 60 * 60 * 3,
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "PARSER_CLASS": "redis.connection.HiredisParser",
            "PASSWORD": "********",
            "CONNECTION_POOL_KWARGS": {"decode_responses": True}
        },
    }
}

参数解释

CACHES

	声明缓存,可以设置多个声明,如default为默认

BACKEND

	声明缓存后端类型

	可被支持的有
	
	* django.core.cache.backends.db.DatabaseCache
	* django.core.cache.backends.dummy.DummyCache
	* django.core.cache.backends.filebased.FileBasedCache
	* django_redis.cache.RedisCach

【注】 以下以django-redis为例介绍


LOCATION

	默认客户端地址,可列表配置多个(主从配置)

TIMEOUT

	缓存保存时间,  秒 * 分 * 小时 或 500秒 的形式表示, 默认300秒, None表示永不过期

KEY_PREFIX

	缓存key的前缀(默认空)

VERSION

	缓存key的版本(默认1)

OPTIONS

	缓存后端配置参数

MAX_ENTRIES

	最大缓存个数(默认300)

CULL_FREQUENCY

	缓存达到最大个数之后,剔除缓存个数的比例

CLIENT_CLASS

	可扩展客户端, 可通过设置配置集群客户端

PASSWORD

	密码

PARSER_CLASS

	可扩展解析器(需要pip install hiredis)redis-py (django-redis 使用的 Redis 客户端) 支持的纯净 Python Redis 解析器可以满足大部分普通任务, 但如果你想要性能更好, 可以使用 hiredis(hiredis 是一个用 C 写的 Redis 客户端, 并且他的解析器可以用在 django-redis 中),如上配置中

SERIALIZER

	可扩展序列器

REDIS_CLIENT_CLASS

	可扩展redis客户端

REDIS_CLIENT_KWARGS

	可扩展redis客户端参数配置

CONNECTION_POOL_CLASS

	配置自己的连接池子类

CONNECTION_POOL_KWARGS

	连接池配置参数

max_connections

	最大连接池配置

[本期重点]decode_responses

	配置返回数据以utf8解码,django-redis默认使用redis-py 模块,查看redis-py的源码

在这里插入图片描述

使用

#!/usr/bin/python
# -*- coding: utf8 -*-
import os

if __name__ == '__main__':
	# 在脚本中使用django框架
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "GreenBook.settings")
    import django
    django.setup()
    from django_redis import get_redis_connection
    con = get_redis_connection('default')
    print(con)
    con.set(633, 'aaa')
    con.set(10000, 'dwajdkwdwkalmdlwkamdlamdlw')
    print(con.get(633))


# Redis<ConnectionPool<Connection<host=127.0.0.1,port=6379,db=1>>>
# aaa
# 如果不配置decode_responses参数
# con.get(633)结果为:
# b'aaa'


猜你喜欢

转载自blog.csdn.net/weixin_43633797/article/details/106043717