Django 缓存框架浅析 + 内存分析

本文详细介绍了Django缓存框架,包括Memcached、数据库缓存、文件系统缓存和本地内存缓存。强调了缓存的益处,如提升响应速度和减少CPU消耗。讨论了缓存参数、使用方式,特别是本地内存缓存的内存占用分析,指出在默认配置下,Django本地缓存的内存占用可控制在30MB以内。

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

Django 缓存框架浅析 + 内存分析

动态网站存在一个基本权衡是——它们是动态的。每次用户请求一个页面,web 服务器需要提供各种各样的计算——从数据库查询到模板渲染再到业务逻辑——最后生成页面呈现给用户。从处理开销的角度来看,这比读取文件的开销要高得多。

缓存是将一些需要经过大量计算的结果存储在一个指定区域中,避免再次访问时的重复计算(处理好缓存的失效时机,否则会破坏数据的实时性)。通俗的讲,缓存就是用空间换取时间的一种策略方案。

使用缓存(这里主要指后端缓存)有以下主要优势:

  • 提升接口响应速度

  • 降低主机的 CPU 资源消耗

Django 的缓存框架可以适配多种的缓存引擎,其应用层读写方式都是通过 KV 进行存取。对于 K 选择的正确性是一个重要的因素。如果 K 中不能照顾到接口的所有可变情况,那么很可能发生不同参数使用同一个缓存 V 的情况:

# /api/test?a=1&b=2&c=3
cache.set("/api/test_a_1_b_2", request) # k 中只存在 a b 两个变化量

# /api/test?a=1&b=2&c=4
cache.get("/api/test_a_1_b_2") # 此时取出的是 在访问/api/test?a=1&b=2&c=3时写入缓存中的相应数据,造成缓存错误命中。

引擎介绍

Memcached

Memcached 是一个完全基于内存的缓存服务器,是 Django 原生支持的最快、最高效的缓存类型。Memcached 以一个守护进程的形式运行,并且被分配了指定数量的 RAM。它所做的就是提供一个快速接口用于在缓存中添加,检索和删除数据。所有数据都直接存储在内存中,因此不会产生数据库或文件系统使用的开销。

setting.py 配置:

CACHES = {
   
   
    'default': {
   
   
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', # 使用 python-memcached 绑定
        'LOCATION': '127.0.0.1:11211', #  ip 是 Memcached 守护进程的 IP 地址,port 是运行 Memcached 的端口
    }
}

## 多服务器缓存共享
CACHES = {
   
   
    'default': {
   
   
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': [
            '172.19.26.240:11211',
            '172.19.26.242:11212',
            '172.19.26.244:11213',
        ]
    }
}

由于 Memcached 是基于内存的缓存,一旦服务器崩溃或者重启,存储在内存中的缓存将会丢失。

数据库缓存</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值