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


Posted in Python onJuly 23, 2015

数据库缓存

为了使用数据库表作为缓存后端,首先在数据库中运行这个命令以创建缓存表:

python manage.py createcachetable [cache_table_name]

这里的[cache_table_name]是要创建的数据库表名。 (这个名字随你的便,只要它是一个有效的表名,而且不是已经在您的数据库中使用的表名。)这个命令以Django的数据库缓存系统所期望的格式创建一个表。

一旦你创建了数据库表,把你的CACHE_BACKEND设置为”db://tablename”,这里的tablename是数据库表的名字,在这个例子中,缓存表名为my_cache_table: 在这个例子中,高速缓存表的名字是my_cache_table:

CACHE_BACKEND = 'db://my_cache_table'

数据库缓存后端使用你的settings文件指定的同一数据库。 你不能为你的缓存表使用不同的数据库后端.

如果你已经有了一个快速,良好的索引数据库服务器,那么数据库缓存的效果最明显。
文件系统缓存

要把缓存项目放在文件系统上,请为CACHE_BACKEND使用”file://“的缓存类型。例如,要把缓存数据存储在/var/tmp/django_cache上,请使用此设置:

CACHE_BACKEND = 'file:///var/tmp/django_cache'

注意例子中开头有三个斜线。 头两项是file://,第三个是第一个字符的目录路径,/var/tmp/django_cache。如果你使用的是Windows,在file://之后加上文件的驱动器号:

file://c:/foo/bar

目录路径应该是*绝对*路径,即应该以你的文件系统的根开始。 在设置的结尾放置斜线与否无关紧要。

确认该设置指向的目录存在并且你的Web服务器运行的系统的用户可以读写该目录。 继续上面的例子,如果你的服务器以用户apache运行,确认/var/tmp/django_cache存在并且用户apache可以读写/var/tmp/django_cache目录。

每个缓存值将被存储为单独的文件,其内容是Python的pickle模块以序列化(“pickled”)形式保存的缓存数据。 每个文件的名称是缓存键,以规避开安全文件系统的使用。
本地内存缓存

如果你想利用内存缓存的速度优势,但又不能使用Memcached,可以考虑使用本地存储器缓存后端。 此缓存的多进程和线程安全。 设置 CACHE_BACKEND 为 locmem:/// 来使用它,例如:

CACHE_BACKEND = 'locmem:///'

请注意,每个进程都有自己私有的缓存实例,这意味着跨进程缓存是不可能的。 这显然也意味着本地内存缓存效率并不是特别高,所以对产品环境来说它可能不是一个好选择。 对开发来说还不错。
仿缓存(供开发时使用)

最后,Django提供了一个假缓存(只是实现了缓存接口,实际上什么都不做)。

假如你有一个产品站点,在许多地方使用高度缓存,但在开发/测试环境中,你不想缓存,也不想改变代码,这就非常有用了。 要激活虚拟缓存,就像这样设置CACHE_BACKEND:

CACHE_BACKEND = 'dummy:///'

使用自定义缓存后端

尽管Django包含对许多缓存后端的支持,在某些情况下,你仍然想使用自定义缓存后端。 要让Django使用外部缓存后端,需要使用一个Python import路径作为的CACHE_BACKEND URI的(第一个冒号前的部分),像这样:

CACHE_BACKEND = 'path.to.backend://'

如果您构建自己的后端,你可以参考标准缓存后端的实现。 源代码在Django的代码目录的django/core/cache/backends/下。

注意 如果没有一个真正令人信服的理由,比如主机不支持,你就应该坚持使用Django包含的缓存后端。 它们经过大量测试,并且易于使用。

Python 相关文章推荐
Python爬虫框架Scrapy安装使用步骤
Apr 01 Python
Python中json格式数据的编码与解码方法详解
Jul 01 Python
python 简单的绘图工具turtle使用详解
Jun 21 Python
Django框架实现逆向解析url的方法
Jul 04 Python
python的依赖管理的实现
May 14 Python
python计算n的阶乘的方法代码
Oct 25 Python
使用python+whoosh实现全文检索
Dec 09 Python
python多线程实现同时执行两个while循环的操作
May 02 Python
Manjaro、pip、conda更换国内源的方法
Nov 17 Python
python搜索算法原理及实例讲解
Nov 18 Python
python源文件的字符编码知识点详解
Mar 04 Python
Python基础之常用库常用方法整理
Apr 30 Python
浅析Python的Django框架中的Memcached
Jul 23 #Python
详解Django中的权限和组以及消息
Jul 23 #Python
在Django的模板中使用认证数据的方法
Jul 23 #Python
在Django中管理Users和Permissions以及Groups的方法
Jul 23 #Python
Django中对通过测试的用户进行限制访问的方法
Jul 23 #Python
在Django中限制已登录用户的访问的方法
Jul 23 #Python
详解Django框架中用户的登录和退出的实现
Jul 23 #Python
You might like
php限制上传文件类型并保存上传文件的方法
2015/03/13 PHP
PHP析构函数destruct与垃圾回收机制的讲解
2019/03/22 PHP
js 代码优化点滴记录
2012/02/19 Javascript
jquery 删除字符串最后一个字符的方法解析
2014/02/11 Javascript
js的[defer]和[async]属性
2014/11/24 Javascript
Javascript中prototype的使用详解
2016/06/18 Javascript
全面总结Javascript对数组对象的各种操作
2017/01/22 Javascript
详解JS判断页面是在手机端还是在PC端打开的方法
2019/04/26 Javascript
echarts多条折线图动态分层的实现方法
2019/05/24 Javascript
解决Vue打包上线之后部分CSS不生效的问题
2019/11/12 Javascript
python实现ftp客户端示例分享
2014/02/17 Python
采用python实现简单QQ单用户机器人的方法
2014/07/03 Python
对python中使用requests模块参数编码的不同处理方法
2018/05/18 Python
python处理数据,存进hive表的方法
2018/07/04 Python
pandas通过索引进行排序的示例
2018/11/16 Python
在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例
2019/01/29 Python
python对csv文件追加写入列的方法
2019/08/01 Python
python如何基于redis实现ip代理池
2020/01/17 Python
全面总结使用CSS实现水平垂直居中效果的方法
2016/03/10 HTML / CSS
微软香港官网及网上商店:Microsoft HK
2016/09/01 全球购物
美国温暖商店:The Warming Store
2018/12/15 全球购物
英格兰足协官方商店:England Store
2019/07/12 全球购物
sort命令的作用和用法
2012/11/04 面试题
掌上明珠Java程序员面试总结
2016/02/23 面试题
销售行政专员职责
2014/01/03 职场文书
简历的个人自我评价范文
2014/01/03 职场文书
借款协议书
2014/04/12 职场文书
个人安全承诺书
2014/05/22 职场文书
学生党员一帮一活动总结
2014/07/08 职场文书
学校运动会广播稿100条
2014/09/14 职场文书
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
初中生考试作弊检讨书
2014/12/14 职场文书
小学数学教学反思范文
2016/02/16 职场文书
浅谈python中的多态
2021/06/15 Python
CSS3中Animation实现简单的手指点击动画的示例
2021/07/15 HTML / CSS
Qt自定义Plot实现曲线绘制的详细过程
2021/11/02 Python