django中的缓存

本文介绍了Django中的缓存机制,包括缓存的作用、缓存框架的核心目标和内置缓存支持。详细讲解了如何配置和使用内存缓存,特别是使用Redis作为缓存的步骤,以及在多缓存环境下的配置和操作。通过装饰器和`caches`进行缓存管理的方法也得到了阐述。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

缓存

存储中间数据的一种介质
作用:提升服务器响应速度
将执行过的操作数据存储下来,在一定时间内,再次获取数据的时候,直接从缓存中获取
比较理想的方案,缓存使用内存级缓存

使用缓存的目的:

缓解服务器的读写压力
提升服务器的响应速度
提升用户体验

Django内存缓存框架

缓存框架的核心目标:

较少的代码:
	缓存应该尽可能快
	因此围绕缓存后端的所有框架应该保持在绝对最小值,特别是对于获取操作
一致性:
	缓存API应该是提供跨越不同缓存后端的一致接口
可扩展性:
	基于开发人员的需求,缓存API应该可以在应用程序级别扩展

django内置了缓存框架,并提供了几种常用的缓存

基于Memcached缓存(类似redis的内存级数据库)
使用数据库进行缓存
使用文件系统进行缓存
使用本地内存进行缓存  # 本机的本地内存其他电脑无法访问
提供缓存扩展接口

缓存配置:

  1. 创建缓存表,缓存表支持过期

    python manage.py createcachetable my_cache_table
    
  2. 缓存配置,在settings.py中:

CACHES = {
    'default': { # 缓存实现
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache', #  缓存实现后端
        'LOCATION': 'my_cache_table', # 缓存位置
        'TIMEOUT': 60*5  # 缓存超时时间
        # 'OPTIONS': {
        #     'MAX_ENTRIES': '300',
        # },
        # 'KEY_PREFIX': 'wcw', # key统一前缀
        # 'VERSION': '1' # 版本信息
    }
}
  1. 缓存使用:
    在视图中使用装饰器(使用最多的场景)

    @cache_page(timeout,cache,key_prefix)
        time 秒 60*5 缓存5分钟
        cache 缓存配置 默认default
        key_prefix 前置字符串
    

请求流程:

无缓存请求流程:

client——url——views——models——db——models——views——response——client

有缓存请求流程:

                           -有缓存内容 则返回到views——response——client
client——url——views——cache/ -无缓存内容 则返回到views——models——db——models——views——储存缓存,然后返回到response——client

缓存底层:

获取cache(存在多个缓存时,通过cache_name获取缓存)

from django.core.cache import caches
cache = caches['cache_name']

获取cache(只有一个缓存时,直接获取)

from django.core.cache import cache"

缓存操作:

cache.set  # 往缓存里设置值
	key
	value
	timeout
get  # 获取值
add  # 添加值
get_or_set
get_many
set_many
delete
delete_many
clear
ncr增加
	incr(key,value) key对应的值上添加value
decr增加
	decr(key,value) key对应的值上减少value
	如果value不写,默认变更为1

使用redis作为缓存:

常见的有两个实现:首先用pip安装下面两个包

pip install django-redis
pip install django-redis-cache

在settings中的CACHE配置redis相关配置

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

需要安装并启动redis才可以使用

redis-server

多缓存:

在使用多缓存时,需要同时配置多个缓存配置

在这里插入图片描述

使用多缓存时 需要在views中设置好对应的缓存存储位置
1:装饰器:

@cache_page(timeout, cache='CACHE_name')

2.使用 caches获取

from django.core.cache import caches
cache = caches['cache_name']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值