简介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数据分析之真实IP请求Pandas详解
Nov 18 Python
TensorFlow实现模型评估
Sep 07 Python
Window 64位下python3.6.2环境搭建图文教程
Sep 19 Python
python爬虫之urllib库常用方法用法总结大全
Nov 14 Python
python的concat等多种用法详解
Nov 28 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
Dec 14 Python
Python实现语音识别和语音合成功能
Sep 20 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
Jan 10 Python
使用TensorFlow搭建一个全连接神经网络教程
Feb 06 Python
python学习之使用Matplotlib画实时的动态折线图的示例代码
Feb 25 Python
Python OpenCV实现传统图片格式与base64转换
Jun 13 Python
python中redis包操作数据库的教程
Apr 19 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文件操作的详细诠释
2013/06/21 PHP
jQuery 可以拖动的div实现代码 脚本之家修正版
2009/06/26 Javascript
jquery 子窗口操作父窗口的代码
2009/09/21 Javascript
js 实现无干扰阴影效果 简单好用(附文件下载)
2009/12/27 Javascript
javascript最常用与实用的创建类的代码
2010/08/12 Javascript
用Javascript评估用户输入密码的强度(Knockout版)
2011/11/30 Javascript
js 立即调用的函数表达式如何写
2014/01/12 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
Node.js 学习笔记之简介、安装及配置
2015/03/03 Javascript
javascript去除空格方法小结
2015/05/21 Javascript
JQuery复制DOM节点的方法
2015/06/11 Javascript
跟我学习javascript的循环
2015/11/18 Javascript
JavaScript代码实现图片循环滚动效果
2020/03/19 Javascript
Angular客户端请求Rest服务跨域问题的解决方法
2017/09/19 Javascript
js原生实现移动端手指滑动轮播图效果的示例
2018/01/02 Javascript
JavaScript使用math.js进行精确计算操作示例
2018/06/19 Javascript
JavaScript实现shuffle数组洗牌操作示例
2019/01/03 Javascript
ES5 模拟 ES6 的 Symbol 实现私有成员功能示例
2020/05/06 Javascript
pycharm 使用心得(一)安装和首次使用
2014/06/05 Python
Python 3.7新功能之dataclass装饰器详解
2018/04/21 Python
详解Django+Uwsgi+Nginx的生产环境部署
2018/06/25 Python
python引用(import)某个模块提示没找到对应模块的解决方法
2019/01/19 Python
对python中矩阵相加函数sum()的使用详解
2019/01/28 Python
python 数据提取及拆分的实现代码
2019/08/26 Python
利用css3 translate完美实现表头固定效果
2017/02/28 HTML / CSS
利用HTML5实现使用按钮控制背景音乐开关
2015/09/21 HTML / CSS
英国著名国际平价时尚男装品牌:Topman
2016/08/27 全球购物
亚洲最大的眼镜批发商和零售商之一:Glasseslit
2018/10/08 全球购物
学前教育学生自荐信范文
2013/12/31 职场文书
生产部厂长助理职位说明书
2014/03/03 职场文书
2014年公司植树节活动方案
2014/03/04 职场文书
义务教育学校标准化建设汇报材料
2014/08/16 职场文书
小学关爱留守儿童活动方案
2014/08/25 职场文书
民主评议政风行风整改方案
2014/09/17 职场文书
计算机实训报告范文
2014/11/05 职场文书
教师节感想
2015/08/11 职场文书