django redis缓存,django 内存不释放
一、缓存
由于姜戈是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个视图的返回值保存至内存或者缓存中,5分钟内再有人来访问时,则不再去执行视角中的操作,而是直接从内存或者使用心得中之前缓存的内容拿到,并返回。
姜戈中提供了6种缓存方式:
开发调试内存文件数据库缓存缓存(python-memcached模块)Memcache缓存(pylibmc模块)1、配置
答:开发调试
1 # 此为开始调试用,实际内部不做任何操作
2 # 配置:
3个缓存={
4"默认":{
5 后端姜戈。核心。缓存。后端。假人。虚拟缓存,#引擎
6"超时":300,#缓存超时时间(默认300,没有表示永不过期,0表示立即过期)
七个"选项":{
8"最大条目数":300,#最大缓存个数(默认300)
9 剔除频率:3,#缓存到达最大个数之后,剔除缓存个数的比例,即:1/剔除频率(默认3)
10 },
11 KEY_PREFIX : ,#缓存键的前缀(默认空)
12 版本:1,#缓存键的版本(默认1)
13 按键功能函数名# 生成键的函数(默认函数会生成为:【前缀:版本:键】)
14 }
15 }
16
17
18 # 自定义键
19 def default_key_func(密钥,密钥前缀,版本):
20
21生成密钥的默认函数。
22
23构造所有其他方法使用的密钥。默认情况下,它会预先考虑
24"关键字前缀"。按键功能可用于指定替代
25具有自定义钥匙制作行为的功能。
26
27返回% s:% s:% s“%(关键字前缀,版本,关键字)
28
29 def get_key_func(key_func):
30
31功能来决定使用哪个按键功能。
32
33默认为" default_key_func .
34
35如果关键函数不为无:
36如果可调用(key_func):
37返回关键函数
38其他:
39返回导入字符串(key_func)
40返回default_key_funcView代码
乙、内存
1 # 此缓存将内容保存至内存的变量中
2 # 配置:
3个缓存={
4"默认":{
5 后端姜戈。核心。缓存。后端。locmem。locmemcache ,
6 位置:独特-雪花,
7 }
8 }
9
10 # 注:其他配置同开发调试版本查看代码
丙、文件
1 # 此缓存将内容保存至文件
2 # 配置:
3
四个缓存={
5"默认":{
6 后端姜戈。核心。缓存。后端。基于文件。filebasedcache ,
7"位置":"/var/tmp/django_cache ",
8 }
9 }
10 # 注:其他配置同开发调试版本查看代码
d、数据库
1 # 此缓存将内容保存至数据库
2
3 # 配置:
四个缓存={
5"默认":{
6 后端姜戈。核心。缓存。后端。db。数据库缓存,
7"位置":"我的缓存表",#数据库表
8 }
9 }
10
11 # 注:执行创建表命令python管理。py createcachetableView代码
e、内存缓存缓存(python-memcached模块)
1 # 此缓存使用python-memcached模块连接缓存
2
3个缓存={
4"默认":{
5 后端姜戈。核心。缓存。后端。memcached。memcachedcache ,
6 位置: 127.0.0.1:11211 ,
7 }
8 }
9
10个缓存={
11"默认":{
12 后端姜戈。核心。缓存。后端。memcached。memcachedcache ,
13"位置":" unix:/tmp/memcached.sock ",
14 }
15 }
16
17个缓存={
18"默认":{
19 后端姜戈。核心。缓存。后端。memcached。memcachedcache ,
20"位置":[
21 172.19.26.240:11211,
22 172.19.26.242:11211,
23 ]
24 }
25 }查看代码
内存缓存缓存(pylibmc模块)
1 # 此缓存使用pylibmc模块连接缓存
2
3个缓存={
4"默认":{
5 后端姜戈。核心。缓存。后端。memcached。皮里麦卡什,
6 位置: 127.0.0.1:11211 ,
7 }
8 }
9
10个缓存={
11"默认":{
12 后端姜戈。核心。缓存。后端。memcached。皮里麦卡什,
13 位置:/tmp/memcached.sock ,
14 }
15 }
16
17个缓存={
18"默认":{
19 后端姜戈。核心。缓存。后端。memcached。皮里麦卡什,
20"位置":[
21 172.19.26.240:11211,
22 172.19.26.242:11211,
23 ]
24 }
25 }查看代码
2、应用
A.全站仪使用
1使用中间件,经过一系列的认证等操作,如果内容存在于缓存中,则使用FetchFromCacheMiddleware获取内容并返回给用户。在将其返回给用户之前,判断缓存是否已经存在。如果不存在,UpdateCacheMiddleware会将缓存保存到缓存中,从而实现全站缓存。
2
3中间件=[
4 django . middleware . cache . updatecachemiddleware ,
5 #其他中间件.
6 django . middleware . cache . fetchfromcachemiddleware ,
7 ]
八
9 CACHE_MIDDLEWARE_ALIAS=
10 CACHE_MIDDLEWARE_SECONDS=
11 CACHE_MIDDLEWARE_KEY_PREFIX= 查看代码
B.独立视图缓存
1模式1:
2从django.views.decorators.cache导入cache_page
三
4 @cache_page(60 * 15)
5定义我的视图(请求):
六.
七
8模式2:
9从django.views.decorators.cache导入cache_page
10
11 urlpatterns=[
12 url(r^foo/([0-9]{1,2})/$,cache_page(60 * 15)(my_view)),
13]查看代码
c、局部视图的使用
1.模板标签简介
2
3 {%加载缓存%}
四
5.使用缓存
六
7 {% cache 5000缓存键%}
8缓存内容
9 { % endcache % }查看代码
更多:猛击这里
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。