django cache 缓存系统

django 缓存系统

https://docs.djangoproject.com/en/dev/topics/cache/#the-low-level-cache-api

http://www.ziqiangxuetang.com/django/django-cache.html

可以缓存能被pickle的对象

安装

pip install hiredis django-redis-cache

setting中配置

#KEY_PREFIX  设置缓存键值的前缀

CACHES = {
	‘mysql‘: {
		‘BACKEND‘: ‘django.core.cache.backends.db.DatabaseCache‘,
		‘LOCATION‘: ‘cache‘,
	},
	‘dummy‘: {
		‘BACKEND‘: ‘django.core.cache.backends.dummy.DummyCache‘
	},
	‘redis‘: {
		‘BACKEND‘: ‘redis_cache.RedisCache‘,
		‘LOCATION‘: [
			‘127.0.0.1:6379‘,
			# ‘<host>:<port>‘,
			# ‘<host>:<port>‘,
		],
		‘OPTIONS‘: {
			‘DB‘: 1,
			# ‘PASSWORD‘: ‘yadayada‘,
			‘PARSER_CLASS‘: ‘redis.connection.HiredisParser‘,
			‘CONNECTION_POOL_CLASS‘: ‘redis.BlockingConnectionPool‘,
			‘CONNECTION_POOL_CLASS_KWARGS‘: {
				‘max_connections‘: 50,
				‘timeout‘: 20,
			},
			‘PICKLE_VERSION‘: -1,
			# ‘MASTER_CACHE‘: ‘<master host>:<master port>‘,
		},
	},
}
CACHES[‘default‘]=CACHES[‘redis‘]			#必须有一个default配置

#使用cache

from django.core.cache import cachescache=caches[‘redis‘]#使用redis做为缓存,
>>> cache.set(‘my_key‘, ‘hello, world!‘, 30)  设置一个key并且30秒后过期
>>> cache.get(‘my_key‘)
>>> cache.get_many([‘a‘, ‘b‘, ‘c‘])
>>> cache.set_many({‘a‘: 1, ‘b‘: 2, ‘c‘: 3})
>>> cache.delete_many([‘a‘, ‘b‘, ‘c‘])
>>> cache.clear()#情况当前所有缓存
>>> cache.incr(‘num‘)#使当前值+1
>>> cache.incr(‘num‘, 10) #当前值+10
>>> cache.decr(‘num‘)#值-1
>>> cache.decr(‘num‘, 5)#值-5

cache version 缓存版本

cache.set(‘my_key‘, ‘hello world!‘)#默认为版本一
"SETEX" ":1:my_key" "300" "\x80\x02U\rhello python!q\x01."
 
cache.set(‘my_key‘, ‘hello world!‘, version=2)
redis 命令
"SETEX" ":2:my_key" "300" "\x80\x02U\x03666q\x01."
 
cache.get(‘my_key‘,version=2)
时间: 2024-08-03 19:18:48

django cache 缓存系统的相关文章

常用缓存系统使用经验总结

0. 前言 缓存系统是提升系统性能和处理能力的利器,常用的缓存系统各自的特性和使用场景有所不同,这里总结下常用缓存系统时需要关注的点以及解决方案,以及业务中缓存系统的选型等. 本文内容主要包括以下: 缓存使用中需要注意的点:热点.惊群.击穿.并发.一致性.预热.限流.序列化.压缩.容灾.统计.监控. spring cache.分布式锁. 1.常用缓存系统 在平常的业务开发过程中,一般会使用集团自己开发的tair分布式缓存系统,tair有三种存储引擎:mdb.ldb.rdb,从名字上就可以看出,分

django框架中的缓存系统

一.浏览器的缓存机制 Cache-Control策略: Cache-Control和Expires的作用相似,即指出当前资源的有效期,控制浏览器是直接从浏览器缓存获取数据还是发送Request到服务端获取数据,只不过Cache-Control的选择方式更多,设置详细,如果要同时设置,优先级高于Expires. Cache-Control: max-age=10,即设置缓存存储的最大周期为10s,这和Date与Expires的差值相对应,private表明响应只能被单个用户缓存,不能作为共享缓存(

Django用户认证系统(三)组与权限

Django的权限系统很简单,它可以赋予users或groups中的users以权限. Django admin后台就使用了该权限系统,不过也可以用到你自己的代码中. User对象具有两个ManyToManyField字段,groups和user_permissions groups = models.ManyToManyField(Group, verbose_name=_('groups'), blank=True, help_text=_('The groups this user bel

Django的缓存(1)

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

django的缓存,信号,序列化

一 Django的缓存机制 1.1 缓存介绍 1.缓存的简介 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作,都会消耗很多的服务端资源,所以必须使用缓存来减轻后端服务器的压力. 缓存是将一些常用的数据保存内存或者memcache中,在一定的时间内有人来访问这些数据时,则不再去执行数据库及渲染等操作,而是直接从内存或memcache的缓存中去取得数据,然后返回给用户.

Django 之 缓存机制

Django 缓存机制 缓存介绍 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作,都会消耗很多的服务端资源,所以必须使用缓存来减轻后端服务器的压力. 缓存是将一些常用的数据保存内存或者memcache中,在一定的时间内有人来访问这些数据时,则不再去执行数据库及渲染等操作,而是直接从内存或memcache的缓存中去取得数据,然后返回给用户. Django提供了6种缓存

Django的缓存机制和信号

Django的缓存机制 1.1 缓存介绍 1.缓存的简介 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作,都会消耗很多的服务端资源,所以必须使用缓存来减轻后端服务器的压力. 缓存是将一些常用的数据保存内存或者memcache中,在一定的时间内有人来访问这些数据时,则不再去执行数据库及渲染等操作,而是直接从内存或memcache的缓存中去取得数据,然后返回给用户. 2

Django框架-Django视图(views)系统

Django的视图系统 定义:一个视图函数(或类),简称为视图,是一个简单的python函数或类,它接受web请求并且返回web响应. 响应可以是一张网页的html内容,一个重定向,一个404错误,一个xml文档,或一张图片. 无论视图本身包含什么逻辑,都要返回响应,代码写在那里都无所谓,只要它在你当前项目目录下面.为了将代码放在某处,大家预定成俗将视图放在项目project或应用程序app目录中的名为views.py的文件中. 1.每个视图函数,都使用HttpRequest对象作为第一个参数,

jQuery.data的是jQuery的数据缓存系统

jQuery.Data源码 jQuery.data的是jQuery的数据缓存系统.它的主要作用就是为普通对象或者DOM元素添加数据. 1 内部存储原理 这个原理很简单,原本要添加在DOM元素本身的数据,现在被集中的存储在cache集合中.它们之间靠一个从1开始的数字键来联系着.这样DOM元素就不会像以前那么笨重了,更不会出现以前那种循环引用而引起的内存泄漏.现在DOM只需要保存好这个数字键值即可.这个属性值被保存在DOM元素的一个属性里,该属性名是由jQuery.expando生成的. 2 Da