简介Django框架中可使用的各类缓存

首先我们需要了解什么是缓存。缓存是将计算出来的结果缓存起来,以供后面的请求使用,避免再次计算,从而提高应用程序的性能。

Django框架中可使用的缓存主要包括内存缓存、文件缓存、数据库缓存以及其他缓存。

内存缓存

内存缓存是将缓存数据保存在内存中,读写速度非常快,但是数据不稳定,需要在应用程序重启时重新载入缓存数据。

Django框架中内置了两种内存缓存方式:

  1. locmem 缓存:使用内存中的一个字典来存储缓存数据,当应用程序重启时数据就丢失了,适用于开发和测试环境。使用示例:
from django.core.cache import cache

cache.set('key', 'value', timeout=60) # 设置缓存

value = cache.get('key') # 获取缓存
  1. memcached 缓存:使用 memcached 服务器缓存数据,具有分布式特性,适用于生产环境。使用示例:

首先需要安装 python-memcached 库:

pip install python-memcached

然后在 Django 配置文件中加入以下配置:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',
    }
}

文件缓存

文件缓存是将缓存数据保存在文件中,数据不会随着应用程序的重启而丢失。但是读写速度较慢,不适用于高并发场景。

Django框架中可以使用以下文件缓存方式:

  1. filebased 缓存:使用文件系统来存储缓存数据,数据被序列化后保存在文件中。使用示例:
from django.core.cache import cache

cache.set('key', 'value', timeout=60, version='1') # 设置缓存

value = cache.get('key', version='1') # 获取缓存
  1. cachepickled 缓存:使用文件系统来存储缓存数据,数据被 Pickled 序列化后保存在文件中,可以存储更复杂的 Python 对象。使用示例:
from django.core.cache import caches

cache = caches['cachepickled']

cache.set('key', {'a': 1, 'b': 2}, timeout=60, version='1') # 设置缓存

value = cache.get('key', version='1') # 获取缓存

数据库缓存

数据库缓存是将缓存数据保存在数据库中,可以存储较大的数据量,适用于一些需要长期保存的数据。

Django框架中使用以下方式实现数据库缓存:

  1. db 缓存:使用 Django 自带的数据库来存储缓存数据。使用示例:

首先需要在数据库中创建用于缓存的数据表:

python manage.py createcachetable

然后在 Django 配置文件中加入以下配置:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
        'LOCATION': 'cache_table',
    }
}
  1. cacheops 缓存:使用 Cacheops 库实现数据库缓存,在性能和易用性上都有很大优势。使用示例:

首先需要安装 cacheops 库:

pip install cacheops

然后在 Django 配置文件中加入以下配置:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
    },
    'cacheops': {
        'BACKEND': 'django_redis.cache.RedisCache',
        'LOCATION': 'redis://127.0.0.1:6379/0',
        'OPTIONS': {
            'PICKLE_VERSION': -1,
        },
        'TIMEOUT': 24*60*60,
    },
}

CACHEOPS = {
    'model1.*': {'ops': 'fetch', 'cache': True},
    'model2.*': {'ops': 'all', 'timeout': 60},
}

其他缓存

除了以上介绍的缓存方式,Django框架中还支持以下缓存方式:

  1. redis 缓存:使用 redis 服务器缓存数据,可以用于多种应用场景,如分布式锁等。
CACHES = {
    'default': {
        'BACKEND': 'django_redis.cache.RedisCache',
        'LOCATION': 'redis://127.0.0.1:6379/1',
        'OPTIONS': {
            'CLIENT_CLASS': 'django_redis.client.DefaultClient',
        },
        'TIMEOUT': 300,
    }
}
  1. cache-machine 缓存:使用 Cache Machine 库实现数据库缓存,可以自动为数据库中的 Model 对象添加缓存,增加代码可维护性。
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',
    }
}

CACHE_MACHINE_ENABLED = True
CACHE_MACHINE_CACHE_ALIAS = 'default'

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:简介Django框架中可使用的各类缓存 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Django REST framework 单元测试

    只是简单记录一下测试代码怎么写 环境 Win10 Python3.7 Django2.2 项目 参照官网 快速开始 写了一个 demo 测试 参照官网 测试和 Django 的测试差不多 创建 tutorial/tests/tests.py import json from django.test import TestCase from rest_fram…

    Django 2023年4月10日
    00
  • Django缓存机制–rest_framework中节流源码使用的就是django提供的缓存api

    一、配置缓存  https://www.jb51.net/article/124434.htm 二、缓存全站、页面、局部   三、自我控制的简单缓存API API 接口为:django.core.chache 存接口:cache.set(key, value, time_out) 取接口:cache.get(key) django中的低层次缓存API 有些时…

    Django 2023年4月10日
    00
  • Django商城项目注册功能的实现

    Django商城项目的注册功能实现是一个比较基础的功能,主要是实现用户注册并将用户信息存储到数据库中。下面是实现该功能的完整攻略: 创建Django项目 使用Django提供的命令行工具创建一个新的Django项目。打开命令行窗口,进入到想要创建Django项目的目录下,然后执行以下命令: django-admin startproject myshop 执…

    Django 2023年5月16日
    00
  • 搭建Django开发环境(Windows、Linux、MacOS)

    Windows系统下的搭建方法 Step 1:安装Python 在Windows系统下,我们可以直接从Python官网 https://www.python.org/downloads/ 下载Python的最新版本,并进行安装。 Step 2:安装Django 打开命令行窗口,运行以下命令来安装Django: pip install django Step …

    Django 2023年3月12日
    00
  • django 在保存数据前进行数据校验

    我们想在保存用户进入数据库之前做一些字段的校验,先贴出代码; import re from django.db import models from django.db.models.signals import pre_save from django.dispatch import receiver UNAME_REG = re.compile(r”^\…

    Django 2023年4月13日
    00
  • Django框架之drf:7、认证组件,权限组件,频率组件,过滤的多种用法,排序,分页,

    Django框架之drf 一、认证组件 简介: ​ 登录认证的限制 ​ 认证组件是drf框架给我们提供的认证接口,它能够在请求进入视图函数/类前进验证(例如:认证用户是否登录),对不符合认证的请求进行拦截并返回校验失败的信息 1、认证组件使用步骤 模块地址: from rest_framework.authentication import BaseAuth…

    2023年4月10日
    00
  • 详解Django Meta元数据类属性解析

    在 Django 中,每个模型都包含一个名为 Meta 的内部类,该类允许我们声明有关模型的元数据。这些元数据可以用来控制模型的特定方面的行为,例如它们的排序,或者将模型转换为某个特定的格式。 下面是一些常见的 Django 元数据类属性及其含义: db_table db_table用于定义模型的数据库表名。如果没有指定,Django 使用模型类的名称和小写…

    Django 2023年3月13日
    00
  • Django专题-ugettext_lazy

    标准翻译  来引入这个函数以节省键入时间.  被标记为待翻译字符串:   from django.utils.translation import ugettext as _ def my_view(request):   output = _(“Welcome to my site.”)   return HttpResponse(output) 显然,你…

    Django 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部