iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Django的缓存(1)
  • 810
分享到

Django的缓存(1)

2024-04-02 19:04:59 810人浏览 安东尼
摘要

     最近在主要负责公司写公司的财务核算、财务统计功能,同时也突击恶补了一些财务方面的知识(这些都是次要的),其中最重要的一点是要生成一张资产负债表。当然在生成资

     最近在主要负责公司写公司的财务核算、财务统计功能,同时也突击恶补了一些财务方面的知识(这些都是次要的),其中最重要的一点是要生成一张资产负债表。当然在生成资产负债表的时候,代码肯定会去数据库中查询大量符合条件的数据,然后在进行计算得出结果,这当中必然会影响到页面的响应速度(后经测试,打开页面要花55秒),为了提高第二次打开页面的速度,我想到了使用缓存。下面简单的讲讲Django缓存相关的知识吧,由于水平有限,不足之处,敬请谅解。

    缓存是指将需要频繁访问的网络内容放在离用户较近访问速度更快的系统中。缓存方案常见的有两种,一种是客户端,也就是web开发中的浏览器;一种就是服务端,以Memcached为代表。这里主要讲服务端缓存。

    下面用一些为代码来讲讲缓存是怎样在动态网页中工作的:

given a URL, try finding that page in the cache
if the page is in the cache:
    return the cached page
else:
    generate the page
    save the generated page in the cache (for next time)
    return the generated page

DjanGo自带了缓存系统,为了方便起见,Django提供了不同级别的缓存粒度:可以缓存特定视图的输出、可以仅仅缓存那些很难生产出来的部分、或者你可以缓存你的整个网站。

一、在django中设置缓存

(1)Memcached

      按照百度上解释,它是一个高性能的分布式内存对象缓存系统,用于动态WEB应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的HashMap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信

     存储方式是memcached中保存的数据都存储在memcached内置的内存存储空间中,因此它不能取代数据库或者文件系统的使用。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。


     在安装 Memcached 后, 还需要安装 Memcached 依赖模块。python 有不少Memcache模块最为常用的是Python-memcached and pylibmc两个模块.

ubuntu系统安装命令:

sudo apt-get install memcached
pip install python-memcached

    在Django中使用Memcached时:
    将 BACKEND 设置为django.core.cache.backends.memcached.MemcachedCache 或者 django.core.cache.backends.memcached.PyLibMCCache (取决于你所选绑定memcached的方式)
    将 LOCATioN 设置为 ip:port 值,ip 是 Memcached 守护进程的ip地址, port 是Memcached 运行的端口。或者设置为 unix:path 值,path 是 Memcached Unix Socket file的路径.
      下面的例子中,Memcached 运行再 本地 (127.0.0.1) 的11211端口,使用 python-memcached:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',
    }
}
下面的例子中,Memcached 通过一个本地的Unix socket file/tmp/memcached.sock
来交互,也使用python-memcached:
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': 'unix:/tmp/memcached.sock',
    }
}

Memcached有一个非常好的特点就是可以让几个服务的缓存共享。 这就意味着你可以再几个物理机上运行Memcached服务,这些程序将会把这几个机器当做 同一个 缓存,从而不需要复制每个缓存的值在每个机器上。为了使用这个特性,把所有的服务地址放在LOCATION里面,用分号隔开或者当做一个list。

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': [
            '172.19.26.240:11211',
            '172.19.26.242:11211',
        ]
    }
}

(2)Databasecache

    Django 可以把缓存保存在你的数据库里。如果你有一个快速的、专业的数据库服务器的话那这种方式是效果最好的。
为了把数据表用来当做你的缓存后台:
        把BACKEND设置为django.core.cache.backends.db.DatabaseCache
        把 LOCATION 设置为 tablename, 数据表的名称。这个名字可以是任何你想要的名字,只要它是一个合法的表名并且在你的数据库中没有被使用过。

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
        'LOCATION': 'my_cache_table',
    }
}

但是在使用之前要创建一个缓存表

python manage.py createcachetable

如果你使用多数据库缓存, createcachetable会在每个缓存中创建一个表。
如果你使用多数据库,createcachetable会遵循你的数据库路由中的allow_migrate()方法

像migrate, createcachetable 这样的命令不会碰触现有的表。它只创建非现有的表。

(3)文件系统缓存

基于文件的缓存后端序列化和存储每个缓存值作为一个单独的文件。 为了使用这个文件缓存,你要设置BACKEND为 "django.core.cache.backends.filebased.FileBasedCache" 并且 LOCATION 设置为一个合适的目录。例如,把缓存储存在 /var/tmp/django_cache,就用这个设置:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
        'LOCATION': '/var/tmp/django_cache',
    }
}

路径应该是绝对路径– 也就是说,要从你的系统路径开始算。你在末尾添加不添加斜杠都是无所谓的。
请确保,你的路径指向是存在的并且,这个路径下 你有系统用户的足够的读,写权限。继续上面的例子,如果你是一个 名叫apache用户,确保 /var/tmp/django_cache这个路径存在并且apache有读和写的权力。

(4)本地缓存

这是默认的缓存,如果你不在指定其他的缓存设置。如果你想要具有高速这个有点的基于内存的缓存但是又没有能力带动 Memcached, 那就考虑一下本地缓存吧。


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

二、cache参数

上面的django的setting文件里的CACHES参数还可以设置一些其它的参数,如下:

TIMEOUT:缓存的默认过期时间,以秒为单位, 这个参数默认是 300 seconds (5 分钟).

当设置为 None 的时候,缓存默认永远不会过期。值设置成0造成缓存立即失效(缓存就没有意义了)。

OPTIONS: 这个参数应该被传到缓存后端。有效的可选项列表根据缓存的后端不同而不同,由第三方库所支持的缓存将会把这些选项直接配置到底层的缓存库。

缓存的后端实现自己的选择策略 将会履行下面这些选项:

MAX_ENTRIES:高速缓存允许的最大条目数,超出这个数则旧值将被删除. 这个参数默认是300.

CULL_FREQUENCY:当达到MAX_ENTRIES 的时候,被删除的条目比率。 实际比率是 1 / CULL_FREQUENCY, 所以设置CULL_FREQUENCY 为2会在达到MAX_ENTRIES 所设置值时删去一半的缓存。这个参数应该是整数,默认为 3.

把 CULL_FREQUENCY的值设置为 0 意味着当达到MAX_ENTRIES时,缓存将被清空。某些缓存后端 (database尤其)这将以很多缓存丢失为代价,大大提高接受访问的速度。

KEY_PREFIX:一个字符串,它将自动包括 (默认预置) 到 Django 服务器所使用的所有缓存密钥

VERSION:由 Django 服务器生成的缓存键的默认版本号

KEY_FUNCTION:包含一个函数,定义了如何将组合成一个最后的缓存键的前缀、 版本和键虚线的路径的字符串

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
        'LOCATION': '/var/tmp/django_cache',
        'TIMEOUT': 60,
        'OPTIONS': {
            'MAX_ENTRIES': 1000
        }
    }}

上面的例子是一个文件系统缓存后端,缓存过期时间被设置为60秒,最大条目为1000。非法的参数将会被系统自动忽视掉。

缓存的知识就介绍到这里,很晚了,明天再接着介绍缓存的使用吧,以上知识仅供参考,也许写的不够好,但知识最重要的还是应用,只有应用的时候才能慢慢体会它的原理以及精妙之处。

您可能感兴趣的文档:

--结束END--

本文标题: Django的缓存(1)

本文链接: https://www.lsjlt.com/news/44406.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Django缓存系统的用法
    本篇内容介绍了“Django缓存系统的用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!缓存的具体使用方法可参考以下文档:https://w...
    99+
    2023-06-04
  • Django——中间件设置缓存
    如图所示查看网站缓存时间 在app中创建middleware.py文件,导入MiddlewareMixin,创建类并继承MiddlewareMixin 在settings中的MIDDLEWARE=[ ] 注册中间件类;添加一个CAC...
    99+
    2023-01-30
    缓存 中间件 Django
  • Django缓存系统指的是什么
    Django缓存系统是Django框架提供的一个用于缓存数据的机制,可以帮助开发者在应用中快速访问和存储数据,从而提高应用的性能和响...
    99+
    2024-03-05
    Django
  • Django缓存机制是什么
    本篇内容介绍了“Django缓存机制是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!缓存的介绍在动态网站中,用户所有的请求,服务器都会去...
    99+
    2023-07-05
  • Django | 页面数据的缓存与使用
    为什么要使用缓存? 一个动态网站的基本权衡点就是,它是动态的。 每次用户请求页面,服务器会重新计算。从开销处理的角度来看,这比你读取一个现成的标准文件的代价要昂贵的多 使用缓存,将多用户访问时基本相同的数据先缓存起来;这样当用户访问页面的...
    99+
    2023-01-31
    缓存 页面 数据
  • Django使用redis配置缓存的方法
    目录前言django应用redis缓存1.settings配置2.全站缓存3.视图函数缓存4.低级缓存5.session缓存对于非经常更新的服务器数据,若每次都从硬盘读取一次,会浪费...
    99+
    2024-04-02
  • Bash中如何使用Django缓存?
    在Django应用程序中,缓存是一种非常重要的机制,它可以帮助我们减少数据库查询的次数,从而提高应用程序的性能。在这篇文章中,我们将探讨如何在Bash中使用Django缓存。 安装Django 在开始之前,我们需要先安装Django。...
    99+
    2023-10-26
    django bash 缓存
  • 一文了解Django缓存机制
    目录缓存的介绍Django的6种缓存方式内存缓存locmem.LocMemCache文件缓存filebased.FileBasedCache⭐️数据库缓存db.DatabaseCac...
    99+
    2023-03-20
    Django缓存
  • Django入门(1)
    项目创建和APP创建 准备环境 python3 virtualenv pip3 pip3 install django==1.1 项目创建,APP创建 django-admin startproject ops cd ops pyth...
    99+
    2023-01-31
    入门 Django
  • Django 缓存问题?试试使用 Go 存储!
    Django 是一个流行的 Python Web 框架,因其简单易用和强大的功能被广泛使用。然而,随着网站的流量增加,缓存问题也随之出现。Django 内置的缓存机制能够很好地解决这个问题,但是在高并发环境下,仍然会存在一些性能瓶颈。为了...
    99+
    2023-11-08
    存储 django 缓存
  • Go 存储缓存:让 Django 更快、更可靠!
    随着 Django 应用程序的复杂性增加,许多开发人员面临的一个常见问题是如何优化应用程序的性能。在大型应用程序中,访问数据库是最常见的瓶颈之一。为了解决这个问题,我们可以使用缓存来提高应用程序的性能和可靠性。 在这篇文章中,我们将介绍 G...
    99+
    2023-11-08
    存储 django 缓存
  • 如何在 Django 中使用 Go 存储缓存?
    Django 是一个流行的 Python Web 框架,而 Go 是一门高效的编程语言。在 Web 开发中,缓存是一个非常重要的概念,它可以大大提高 Web 应用程序的性能。本文将介绍如何在 Django 中使用 Go 存储缓存。 一、什么...
    99+
    2023-11-08
    存储 django 缓存
  • Django 中如何实现高效缓存?
    Django 是一个高效的 Python Web 框架,它提供了许多有用的功能,其中一个非常重要的功能就是缓存。缓存可以显著提高网站的性能,降低服务器的负载,减少用户等待时间,提高用户体验。本文将介绍 Django 中如何实现高效缓存。 一...
    99+
    2023-10-23
    缓存 django windows
  • Django页面缓存的cache_key是怎样生成的
    这篇文章给大家分享的是有关Django页面缓存的cache_key是怎样生成的的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。页面缓存e.g.@cache_page(time_out, key_prefi...
    99+
    2023-06-08
  • Windows 下的 Django 缓存设置与优化技巧。
    Windows 下的 Django 缓存设置与优化技巧 Django 是一个高效的 Web 开发框架,它提供了强大的缓存机制来优化网站的性能。在本文中,我们将介绍如何在 Windows 下设置 Django 缓存,以及如何优化缓存以提高网站...
    99+
    2023-10-23
    缓存 django windows
  • Django中HTTP响应的缓存策略是什么?
    Django是一个流行的Python Web框架,它提供了许多功能来帮助开发人员快速构建高质量的Web应用程序。在Web开发中,HTTP响应的缓存策略对于提高Web应用程序的性能至关重要。在本文中,我们将讨论Django中HTTP响应的缓存...
    99+
    2023-07-07
    http 响应 django
  • Python 缓存技术如何提升 Django 的性能?
    Django 是一个广受欢迎的 Python Web 框架,它提供了许多强大的功能,如 ORM、模板引擎、自动化管理等,但在处理大量请求时,性能可能成为一个问题。在这种情况下,缓存技术是一个非常有用的工具,可以显著提高 Django 应用...
    99+
    2023-10-23
    缓存 django windows
  • 如何在 Django 中使用 Python 缓存库?
    Django 是一个开源的 Python web 框架,它提供了许多强大的功能,可以帮助开发人员快速构建高性能的 web 应用程序。其中之一就是缓存,它可以让 Django 应用程序更快地响应用户请求。本文将介绍如何在 Django 中使用...
    99+
    2023-10-23
    缓存 django windows
  • Django 缓存的终极解决方案:结合 Go 存储技术!
    Django 是一个流行的 Python Web 框架。在开发 Web 应用程序时,缓存是提高性能的关键组成部分之一。Django 提供了多种缓存选项,包括内存缓存、数据库缓存、文件缓存等。但是这些缓存方案都存在一些问题,比如内存缓存可能...
    99+
    2023-11-08
    存储 django 缓存
  • Go、Django和Bash的缓存机制有哪些不同?
    Go、Django和Bash是当今流行的编程语言和框架之一,它们都有自己的缓存机制,本文将介绍它们的不同。 一、Go缓存机制 Go语言提供了内置的缓存机制,称为“sync.Map”,它是一个并发安全的映射,可用于在多个goroutine之间...
    99+
    2023-10-26
    django bash 缓存
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作