简介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脚本来删除指定容量以上的文件的教程
May 04 Python
python使用PyGame模块播放声音的方法
May 20 Python
python直接访问私有属性的简单方法
Jul 25 Python
CentOS中升级Python版本的方法详解
Jul 10 Python
Python实现的根据文件名查找数据文件功能示例
May 02 Python
Centos下实现安装Python3.6和Python2共存
Aug 15 Python
Python使用try except处理程序异常的三种常用方法分析
Sep 05 Python
Python之列表实现栈的工作功能
Jan 28 Python
python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码
Jul 31 Python
Keras load_model 导入错误的解决方式
Jun 09 Python
python接口自动化之ConfigParser配置文件的使用详解
Aug 03 Python
python源文件的字符编码知识点详解
Mar 04 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
初品cakephp 入门基础
2012/02/16 PHP
用php实现百度网盘图片直链的代码分享
2012/11/01 PHP
php记录代码执行时间(实现代码)
2013/07/05 PHP
php读取本地文件常用函数(fopen与file_get_contents)
2013/09/09 PHP
php中explode函数用法分析
2014/11/15 PHP
Yii2实现让关联字段支持搜索功能的方法
2016/08/10 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
PHP如何使用JWT做Api接口身份认证的实现
2020/02/03 PHP
Package.js  现代化的JavaScript项目make工具
2012/05/23 Javascript
jQuery实现的一个自定义Placeholder属性插件
2014/08/11 Javascript
js实现鼠标触发图片抖动效果的方法
2015/02/27 Javascript
js点击按钮实现带遮罩层的弹出视频效果
2015/12/19 Javascript
JS实现的数字格式化功能示例
2017/02/10 Javascript
js实现随机数字字母验证码
2017/06/19 Javascript
微信小程序中添加客服按钮contact-button功能
2018/04/27 Javascript
学习React中ref的两个demo示例
2018/08/14 Javascript
vue中使用极验验证码的方法(附demo)
2019/12/04 Javascript
使用Python的Tornado框架实现一个Web端图书展示页面
2016/07/11 Python
Python django实现简单的邮件系统发送邮件功能
2017/07/14 Python
python通过zabbix api获取主机
2018/09/17 Python
在python中利用最小二乘拟合二次抛物线函数的方法
2018/12/29 Python
python异步存储数据详解
2019/03/19 Python
python函数参数(必须参数、可变参数、关键字参数)
2019/08/16 Python
利用keras使用神经网络预测销量操作
2020/07/07 Python
python3 中使用urllib问题以及urllib详解
2020/08/03 Python
详解Anaconda安装tensorflow报错问题解决方法
2020/11/01 Python
localStorage 设置过期时间的方法实现
2018/12/21 HTML / CSS
澳大利亚家具和家居用品在线:BROSA
2017/11/02 全球购物
英国受欢迎的运动鞋和街头服装商店:Footasylum
2018/06/12 全球购物
Perfume’s Club澳大利亚官网:西班牙领先的在线美容店
2021/02/01 全球购物
《火烧云》教学反思
2014/04/12 职场文书
交通事故责任认定书
2015/08/06 职场文书
护理心得体会范文
2016/01/22 职场文书
python获取淘宝服务器时间的代码示例
2021/04/22 Python
忆童年!用Python实现愤怒的小鸟游戏
2021/06/07 Python
Golang gRPC HTTP协议转换示例
2022/06/16 Golang