简介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 相关文章推荐
写了个监控nginx进程的Python脚本
May 10 Python
Python实现约瑟夫环问题的方法
May 03 Python
用yum安装MySQLdb模块的步骤方法
Dec 15 Python
python 中random模块的常用方法总结
Jul 08 Python
Python基于Matplotlib库简单绘制折线图的方法示例
Aug 14 Python
Python yield与实现方法代码分析
Feb 06 Python
使用pandas read_table读取csv文件的方法
Jul 04 Python
pycharm修改界面主题颜色的方法
Jan 17 Python
python函数定义和调用过程详解
Feb 09 Python
python IDLE添加行号显示教程
Apr 25 Python
Python 操作SQLite数据库的示例
Oct 16 Python
Python+Matplotlib+LaTeX玩转数学公式
Feb 24 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
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/03/02 无线电
PHP 500报错的快速解决方法
2016/12/14 PHP
PHP+ajax实现二级联动菜单功能示例
2018/08/10 PHP
php json转换相关知识(小结)
2018/12/21 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
2019/06/12 PHP
greybox——不开新窗口看新的网页
2007/02/20 Javascript
如何让div span等元素能响应键盘事件操作指南
2012/11/13 Javascript
JS实现网页Div层Clone拖拽效果
2015/09/26 Javascript
AngularJS 自定义指令详解及示例代码
2016/08/17 Javascript
jQuery中delegate()方法的用法详解
2016/10/13 Javascript
jQuery+json实现动态创建复杂表格table的方法
2016/10/25 Javascript
微信小程序picker组件简单用法示例【附demo源码下载】
2017/12/05 Javascript
vue中的自定义分页插件组件的示例
2018/08/18 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
原生JavaScript之es6中Class的用法分析
2020/02/23 Javascript
Js图片点击切换轮播实现代码
2020/07/27 Javascript
JavaScript中的Proxy对象
2020/11/27 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
python创造虚拟环境方法总结
2019/03/04 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
2019/04/15 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
在python中,使用scatter绘制散点图的实例
2019/07/03 Python
pandas factorize实现将字符串特征转化为数字特征
2019/12/19 Python
TensorFlow——Checkpoint为模型添加检查点的实例
2020/01/21 Python
如何表示python中的相对路径
2020/07/08 Python
Python爬虫小例子——爬取51job发布的工作职位
2020/07/10 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
英国打印机墨水和碳粉商店:Printerinks
2017/06/30 全球购物
Laravel中Kafka的使用详解
2021/03/24 PHP
行政总经理岗位职责
2013/12/05 职场文书
租房合同协议书
2014/04/09 职场文书
幼儿园课题实施方案
2014/05/14 职场文书
大学计划书范文800字
2014/08/14 职场文书
教师三严三实心得体会
2014/10/11 职场文书
水知道答案观后感
2015/06/08 职场文书
干货:如何写好工作总结报告!
2019/05/10 职场文书