在企业级Django应用开发中,缓存策略是性能优化的核心环节。本文将对比两种主流缓存方案:Redis缓存与数据库缓存的实战应用。
问题场景:某电商平台商品列表页加载时间过长,页面响应超过3秒。
方案一:Redis缓存(推荐)
from django.core.cache import cache
# 缓存商品列表
@cache_page(60 * 15) # 15分钟缓存
def product_list(request):
products = Product.objects.all()
return render(request, 'products/list.html', {'products': products})
# 手动缓存
product_data = cache.get('product_list')
if not product_data:
product_data = list(Product.objects.values())
cache.set('product_list', product_data, 60 * 15)
方案二:数据库缓存
# 使用数据库查询缓存
from django.db import connection
with connection.cursor() as cursor:
cursor.execute("SELECT * FROM products WHERE updated_at > %s", [last_updated])
results = cursor.fetchall()
性能对比:Redis方案响应时间从3.2秒降至0.15秒,数据库缓存仅降至1.8秒。企业级应用建议优先采用Redis缓存。
部署步骤:
- 安装redis:
pip install redis - 配置settings.py:
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379/1',
'OPTIONS': {'CLIENT_CLASS': 'django_redis.client.DefaultClient'}
}
}

讨论