Redis应用(django)
2024-09-07 21:28:08
自定义使用redis
创建url
定义单例模式连接池
import redis
# 连接池
POOL = redis.ConnectionPool(host='10.211.55.4', port=6379,password='luffy1234',max_connections=1000)
导入连接池,并连接
import redis
from django.shortcuts import render,HttpResponse
from utils.redis_pool import POOL def index(request):
conn = redis.Redis(connection_pool=POOL)
conn.hset('kkk','age',18) return HttpResponse('设置成功') def order(request):
conn = redis.Redis(connection_pool=POOL)
conn.hget('kkk','age') return HttpResponse('获取成功')
使用第三方组件
安装
pip3 install django-redis
连接池不用写,内部帮我们定义好了连接池。
redis配置
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": "密码",
}
}
}
使用
import redis
from django.shortcuts import render,HttpResponse
from django_redis import get_redis_connection def index(request):
conn = get_redis_connection("default")
return HttpResponse('设置成功')
def order(request):
conn = get_redis_connection("back")
return HttpResponse('获取成功')
可以写多个,自动选择链接
import redis
from django.shortcuts import render,HttpResponse
from django_redis import get_redis_connection def index(request):
conn = get_redis_connection("default")
return HttpResponse('设置成功')
def order(request):
conn = get_redis_connection("back")
return HttpResponse('获取成功')
高级配置
1. 全站缓存
给整个网站都设置缓存
设置中间件
from django.shortcuts import render,HttpResponse
import time def index(request):
ctime = str(time.time())
return HttpResponse(ctime) def order(request):
ctime = str(time.time())
return HttpResponse(ctime)
还可以设置超时时间
2. 单视图
全栈缓存太大了,我们如何让它进行单页面缓存。
去掉中间件,加装饰器
from django.shortcuts import render,HttpResponse
import time
from django.views.decorators.cache import cache_page
from rest_framework.throttling import SimpleRateThrottle @cache_page(60 * 15)
def index(request):
ctime = str(time.time())
return HttpResponse(ctime) def order(request): return render(request,'order.html')
3. 局部页面
补充:
rest framework框架访问频率限制推荐放到 redis/memecached
# redis配置
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": "密码",
}
}
}
# FileBased配置
# CACHES = {
# 'default': {
# 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
# 'LOCATION': '/var/tmp/django_cache',
# }
# }
# Memcached配置
# CACHES = {
# 'default': {
# 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
# 'LOCATION': '127.0.0.1:11211',
# }
# }
设置哪个,缓存放在哪。
memarcahe不能做持久化。
最新文章
- 学习AOP之深入一点Spring Aop
- Android开发究竟用什么工具,Eclipse||AS
- BZOJ 2179: FFT快速傅立叶
- MyEclipse中代码格式化后自动换行
- bzoj3926: [Zjoi2015]诸神眷顾的幻想乡
- ThinkPHP中使用ajaxReturn进行ajax交互
- 在SWING里嵌入SWT的组件
- Java 命名空间的由来和引入
- AspNetPager 的使用
- css小技巧,如何制作一个箭头符号
- Xcode制作插件
- Python之路- 反射&;定制自己的数据类型
- 关于Linux虚拟化技术KVM的科普 科普三(From OenHan)
- mybatis中namespace配置方式
- Applet程序组件与AJAX技术
- 每日linux命令学习-head命令和tail命令
- Unity3D学习笔记(三十六):Shader着色器(3)- 光照
- SRM472
- libcurl下载文件
- mysql修改表的存储引擎(myisam<;=>;innodb)【转】