一:连接池
它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。
1.利用python天生的单例模式和 redis
xx.py
import redis
POOL = redis.ConnectionPool(host:'', port=6379, password='', max_connections=1000)
from xx import POOL
conn = redis.Redis(connection_pool = POOL)
2.利用第三方模块 django_redis
settings.py
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379',
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
'CONNECTIO_POOL_KWARGS': {'max_connections': 100}
}
},
'下一个'。。。。
}
from django_redis import get_redis_connection
conn = get_redis_connection('default')
二:缓存
1.全站缓存:
使用中间件,经过一系列的认证等操作,如果内容在缓存中存在,则使用FetchFromCacheMiddleware获取内容并返回给用户,当返回给用户之前,判断缓存中是否已经存在,如果不存在则UpdateCacheMiddleware会将缓存保存至缓存,从而实现全站缓存
在settings中添加设置
MIDDLEWARE = [
'django.middleware.cache.UpdateCacheMiddleware', # 第一个位置
# 其他中间件...
'django.middleware.cache.FetchFromCacheMiddleware', # 最后一个位置
]
2.单视图缓存:
不见上面的中间件,加装饰器
import time
from django.views.decorators.cache import cache_page
@cache_page(60*2) # 60秒 * 2 2分钟
def test(request):
ctime = str(time.time())
return HttpResponse(ctime)
3.局部网页缓存:
a. 引入TemplateTag
{% load cache %}
b. 使用缓存
{% cache 5000 缓存key %} 5000毫秒
缓存内容
{% endcache %}
版权声明:本文为DeskyAki原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。