缓存框架

缓存是提高Web应用性能的一种重要技术,它通过在内存或缓存系统中存储计算结果避免对IO开销相对较大的数据库或接口重复访问,从而加速响应时间。Django支持多种缓存后端,包括内存缓存、数据库缓存、文件缓存、分布式缓存等。这篇笔记我们对Django中缓存的使用进行简单介绍。

配置缓存后端

LocMemCache 内存缓存

Django提供了多种内置缓存后端,其中最简单和高效的(非分布式场景下)就是内存缓存,下面配置了内存缓存作为缓存后端。

settings.py

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
    }
}

Redis 分布式缓存

对于分布式场景,我们一般使用Redis作为缓存后端,不过Django默认没有包含Redis的客户端库,我们需要先安装。

pip3 install django-redis

然后在settings.py项目配置文件中添加如下配置。

settings.py

CACHES = {
    'default': {
        'BACKEND': 'django_redis.cache.RedisCache',
        'LOCATION': 'redis://127.0.0.1:6379/0',
        'OPTIONS': {
            'CLIENT_CLASS': 'django_redis.client.DefaultClient',
        }
    }
}

其中Location字段指定了Redis的地址。

使用缓存

Django中缓存的使用非常简单,只需要在需要缓存的地方调用cache模块的相应方法即可,下面是一些例子。

from django.http import HttpResponse
from django.core.cache import cache


def index(request):
    # 设置缓存
    cache.set('animal', 'dog', timeout=60 * 15)

    # 获取缓存
    value = cache.get('animal')
    print(value)

    # 删除缓存
    cache.delete('animal')
    return HttpResponse('OK')

Django默认使用Pickle序列化缓存对象。

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap