Djnago中缓存配置(redis配置案例)
Django中提供了6种缓存方式:
- 开发调试
- 内存
- 文件
- 数据库
- Memcache缓存(python-memcached模块)
- Memcache缓存(pylibmc模块)
配置文件
# 内存
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'unique-snowflake',
'TIMEOUT': 300, # 缓存超时时间(默认300,None表示永不过期,0表示立即过期)
'OPTIONS': {
'MAX_ENTRIES': 100, # 最大缓存个数(默认300)
'CULL_FREQUENCY': 3, # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)
},
}
}
应用
视图中缓存
- 视图缓存只需要加上一个cache_page即可
from django.views.decorators.cache import cache_page
@cache_page(5)
def student_list(request, *args, **kwargs):
students = models.Student.objects.all()
print('students')
return render(request, 'student_list.html', {'students': students})
全栈缓存
- 修改配置文件
MIDDLEWARE = [
'django.middleware.cache.UpdateCacheMiddleware',
....
'django.middleware.cache.FetchFromCacheMiddleware',
]
#使用中间件,经过一系列的认证等操作,如果内容在缓存中存在,则使用 FetchFromCacheMiddleware 获取内容并返回给用户,当返回给用户之前,判断缓存中是否已经存在,如果不存在则UpdateCacheMiddleware 会将缓存保存至缓存,从而实现全站缓存。
模板局部缓存
- 使用内建的自定义标签
{% load cache %}
{% cache 5 'xxx' %}
缓存
{{ now }}
{% endcache %}
使用redis做缓存实例
#1.安装 pip install django-redis
#2.在stting中配置CACHES,可以设置多个缓存,根据名字使用
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"CONNECTION_POOL_KWARGS": {"max_connections": 100}
# "PASSWORD": "密码",
}
}
},
#另添加缓存
"JERD": { }
#3.根据名字去连接池中获取连接,视图中连接(手动操作redis)
from django.shortcuts import HttpResponse
from django_redis import get_redis_connection
def index(request):
r = get_redis_connection("default")
r.hmset("name_a", {"key_a": "value_a", "key_b": "value_b"})
return HttpResponse("设置redis")
def order(request):
r = get_redis_connection("default")
val = r.hmget("name_a", ["key_a", "key_b"])
print(val) # [b'value_a', b'value_b']
return HttpResponse("获取redis")
中间件:全站使用缓存
MIDDLEWARE = [
'django.middleware.cache.UpdateCacheMiddleware', # 放在第一
# 其他中间件...
'django.middleware.cache.FetchFromCacheMiddleware', # 放在最后
]
CACHE_MIDDLEWARE_ALIAS = "" # 用于存储的缓存别名
CACHE_MIDDLEWARE_SECONDS = 600 # 每个页面应缓存的秒数
CACHE_MIDDLEWARE_KEY_PREFIX = "" # 如果使用相同的Django安装在多个站点之间共享缓存,请将其设置为站点名称或此Django实例特有的其他字符串,以防止发生密钥冲突。如果你不在乎,请使用空字符串。
Djnago中缓存配置(redis配置案例)的更多相关文章
- 配置redis
配置Redis 配置相关redis.conf bind 127.0.0.1 注释掉 否则其它远程计算机无 ...
- Linux环境下安装、配置Redis
linux下安装redis 官网下载链接:https://redis.io/download 安装 下载redis压缩包 1.选择Stable(5.0)下的Download 5.0.0 链接进行下载 ...
- CentOS 7安装配置Redis数据库
Redis源码获取 1.进入Redis官网获取Redis最新稳定版下载地址 2.通过wget命令下载 Redis 源代码. Redis编译 1.通过tar -xvf redis-3.0.2.tar ...
- spring-boot-learning 缓存之redis
什么是BSD协议: BSD是"Berkeley Software Distribution"的缩写,意思是"伯克利软件发行版". BSD开源协议是一个给于使用者 ...
- 我在工作中遇到的redis集群使用
写次随笔,给自己工作学习中记录一个笔记 废话不多说,直接上代码: 功能:将相关信息存到redis中,并设置过期时间,如果redis中有,从redis获取,如果没有,从mysql中获取.redis配置了 ...
- Spring-Boot项目中配置redis注解缓存
Spring-Boot项目中配置redis注解缓存 在pom中添加redis缓存支持依赖 <dependency> <groupId>org.springframework.b ...
- 高级运维(六):源码安装Redis缓存服务、常用Redis数据库操作指令、配置Redis主从服务器
一.源码安装Redis缓存服务 目标: 本案例要求先快速搭建好一台Redis服务器,并测试该缓存服务器: 1> 设置变量test,值为123 2> 查看变量test的值 3> 设置计 ...
- SpringMVC+Mybatis+MySQL配置Redis缓存
SpringMVC+Mybatis+MySQL配置Redis缓存 1.准备环境: SpringMVC:spring-framework-4.3.5.RELEASE-dist Mybatis:3.4.2 ...
- ThinkPHP5配置redis缓存
thinkphp采用cache类提供缓存功能支持,采用驱动方式,在使用缓存之前需要进行初始化操作.支持的缓存类型包括file.memcache.wincache.sqlite.redis和xcache ...
随机推荐
- 如何利用Smartbi做数据分析:车企销量排名TOP10的车型
下面我们来对比一下去年和今年的销量.同比增长情况: 图1. 轿车销量月趋势 图2. SUV销量月趋势 不难看出2月.7月为两个销量低点,而7月销量受天气影响较大,烈日.高温,毫无看车热情,复杂多变的外 ...
- 大数据时代变局与机遇,BI数字化转型的实战攻略!
党的十九大报告提出,要推动互联网.大数据.人工智能和实体经济深度融合.更加高效地获取.运用信息,成为企业具有强大竞争力的重要标志.我国企业应牢牢把握历史性机遇,以更加开放的姿态,积极拥抱新经济,积极参 ...
- .net core多环境发布部署
1.新建的asp.net core项目默认会有appsettings.json和appsettings.Development.json, 新建一个生产环境appsettings.Production ...
- java复习面向对象(二)
java复习面向对象(二) 1.static关键字 举例图片 静态变量 使用static修饰的成员变量是静态变量 如果一个成员变量使用了关键字static,那么这个变量不属于对象自己,而属于所在的类多 ...
- [2022-3-5] OICLASS-USACO提高组模拟赛2 B: Cow Frisbee
题意 在一排奶牛中,对于每两头奶牛,如果两头奶牛之间没有奶牛比这两头高,则答案累加这两头奶牛的距离. 分析 设现在分析的奶牛为第 \(i\) 头,它向左扔出了一个飞盘,显然它的飞行高度为奶牛的高度.飞 ...
- 在java的继承中你是否有这样的疑惑?
一.问题 最近在写代码,有两个属性很相近的类,其中80%的属性(字段)都是一样的,剩下的才是各自不一样的,在设计的时候,采用了继承的方式,抽象除了一个父类,大概如下, 有FirstChild和Seco ...
- Mock平台2-Java Spring Boot框架基础知识
微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 认识Spring Boot 在N年前的大学时代想要开发一个Web服务使用的还是SSH框架(struts+spring+hibernate) ...
- 专业3 Cookie 和Session的使用及原理
Cookie的使用及原理 什么是cookie cookie是一种用来跟踪和识别用户上网信息的会话控制技术,它将跟踪后的信息存储在客户端的浏览器上 cookie如何使用 第一步:设置cookie即可(告 ...
- OSPF协议原理及配置2-理解邻居和邻接关系
OSPF是一个动态路由协议,运行OSPF的路由器之间需要交换链路状态信息和路由信息,在交换这些信息之前首先需要建立邻接关系.邻接关系用来交换链路状态及路由信息. 注意:并非所有的邻居关系都可以成为邻接 ...
- LGP4287题解
小清新 manacher 题.题意清楚. 首先看到回文,自然而然地就去想 manacher 了.先想想,manacher 到底在干嘛? manacher 做的其实是一个暴力,枚举每一个位置最远能够伸到 ...