django的缓存的用法讲解

1. django缓存: 缓存的机制出现主要是缓解了数据库的压力而存在的

2. 动态网站中,用户的请求都会去数据库中进行相应的操作,缓存的出现是提高了网站的并发量

3. django的缓存分为 : 三种粒度, 六种缓存方式:

4. 什么是三种粒度: 全站缓存, 单页面缓存, 页面中局部缓存

6. 六种缓存方式: 开发调试缓存, 内存缓存, 文件缓存, 数据库缓存, Memcache缓存(使用python-memcached, pylibmc 两种)

7. 在Django缓存中使用的最多的是: 文件缓存 与 redis缓存
8. redis 与 memcached 的区别:
mysql , oracle : 关系型数据库
redis, mongodb: 非关系型数据库 /nosql
redis 存在存中中的
mongodb 存在硬盘上 redis 一般用来:
做缓存
session数据
游戏排行榜
对速度要求比较高的数据的存储
做消息队列
redis 是key-value的存储, 支持持久化, 有五大数据类型
字符串
列表
字典
集合
有序集合 比较redis与Memcached:
redis 支持五大数据类型
redis 支持持久化
单线程,单进程, 速度非常快
memcached 不能支持持久化,只支持字符串 redis 支持的五大数据类型:
redis ={
k1: '', 字符串
k2: [1,2,3] 列表
k3: {1,2,3} 集合
k4: {name:gukai,age:18} 字典/哈希表
k5: {('gukai',18),('lqz',33)} 有序集合
}
9. 配置一个文件当作缓存:
第一步: 在 setting中配置:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', # 指定缓存使用的引擎
'LOCATION': 'D:\lqz\cache', # 指定缓存的路径
'TIMEOUT': 300, # 缓存超时时间(默认为300秒,None表示永不过期)
'OPTIONS': {
'MAX_ENTRIES': 300, # 最大缓存记录的数量(默认300)
'CULL_FREQUENCY': 3, # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)
}
}
} 第二步: 在视图类中使用:
import time # 这是在单页面缓存 (使用装饰器)
from django.views.decorators.cache import cache_page
# 代表缓存5s
@cache_page(5)
def cache_test(request):
print('走视图函数')
ctime=time.time()
return render(request,'index.html',locals()) # 这是在局部使用:
{ % load cache %}
# 传两个参数:第一个参数是超时时间,第二个参数是key值,唯一的标志#
{ % cache 5 'ttt' %}
当前时间是:{{ctime}}
{ % endcache %} # 这是在全站缓存: 在MIDDLEWARE中添加
MIDDLEWARE = [
'django.middleware.cache.UpdateCacheMiddleware', #添加生效全局缓存
#处理跨域的中间件
'app01.mycsrf.MyMiddleware', 'django.middleware.cache.FetchFromCacheMiddleware' #添加生效全局缓存
] CACHE_MIDDLEWARE_SECONDS=5 #设置缓存的秒数 #######################以上是以文件的形式配置缓存###################

第一种django的缓存方式-用文件形式的缓存

redis的使用:
python操作redis pip3 install redis #安装模块 快速使用:
import redis conn = redis.Redis(host='127.0.0.1',port=6379)
conn.set('age','') #给redis添加数据
conn.set('name','gukai')
name = conn.get('name') #给redis获取数据
print(name) redis 设置连接池: 使用单例模式 第一步: 创建一个py文件: 创建conn_pool.py
import redis POOL=redis.ConnectionPool(host='127.0.0.1',port=6379,max_connections=1000) 第二步: 调用conn_pool.py文件
# 连接池
#生成一个池子,默认有好多连接
from conn_pool import POOL
# 每次执行这句话,从池子中取一个链接
conn=redis.Redis(connection_pool=POOL) print(conn.get('name')) ###########这里就完成了单例模式的redis redis 重点掌握的: get, set, mget, mset, incr, decr,append conn.set('name','egon') #添加数据 set有几个属性需要掌握的
例题: set(name, value, ex=None, px=None, nx=False,xx=False)
name: 就是 设置key值
value: 就是 设置value的值
ex: 设置 过期的时间(秒)
px: 设置 过期的时间(毫秒)
nx: 设置为True 则只有name不存在的时间,才创建,如果name存在就不修改
xx: 设置为True 则只有name存在的时间, 当前set操作才执行,值存在才能修改,值不存在,不会设置新的值 conn.get('name') #获取数据 conn.mset({'name':'gukai','age':28}) #可以一次插入多条数据 conn.mget('name','age') #一次查询多条数据 conn.incr('age', amount=1) #自定年龄+1 多数用于访问量的 访问一次+1
conn.decr('age') #自定义年龄-1 conn.append('age','pp') #添加数据在values内,并统计返回其值的字符串个数

第二种用redis做缓存的

django之缓存的用法, 文件形式与 redis的基本使用的更多相关文章

  1. 初试Django的缓存系统

    初试Django的缓存系统 现在我网页的逻辑是,响应请求,查找数据库相关信息,渲染模版生成最终页面,最后返回.使用缓存后就是将这个页面保存一段时间,在有响应请求相同页面的时候,可以直接返回,不用再做那 ...

  2. Django与缓存

    我们都知道Django建立的是动态网站,正常情况下,每次请求过来都经历了这样一个过程: 接收请求 -> url路由 -> 视图处理 -> 数据库读写 -> 视图处理 -> ...

  3. Django的缓存

    由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显, 最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中, ...

  4. django的缓存,信号,序列化

    一 Django的缓存机制 1.1 缓存介绍 1.缓存的简介 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的 ...

  5. Django 分页器 缓存 信号 序列化

    阅读目录 分页器 缓存 信号 序列化 Django分页器  (paginator) 导入 from django.core.paginator import Paginator, EmptyPage, ...

  6. Django的缓存机制和信号量相关

    缓存介绍 缓存的简介 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作 ...

  7. Django 之 缓存机制

    Django 缓存机制 缓存介绍 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次 ...

  8. Django day31 contentType组件,Django的缓存

    一.contentType组件 1.干什么用的? 是一个django内置的一个组件,方便我们快速的连表操作 2.这两个字段都不会在数据库中生成,他只是用来查询,插入的 -在course表中: poli ...

  9. Django之缓存机制

    1.1 缓存介绍 1.缓存的简介 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次 ...

随机推荐

  1. cordova原生页面切换效果插件的使用:com.telerik.plugins.nativepagetransitions

    1. 添加插件:cordova plugin add com.telerik.plugins.nativepagetransitions2. 使用方法: 在index.html中添加: <met ...

  2. Java_04循环结构

    1.while 循环结构 格式: while(循环条件){ } 关键字 while 后的小括号中的内容是循环条件.循环条件是一个表达式,值为布尔类型. { }大括号中的语句统称为循环操作,又称为循环体 ...

  3. mysql根据某个字符串拆分表中的字段,然后赋值给另外一个字段

    sql语句示例: UPDATE user_info SET area_code =  SUBSTRING_INDEX(telphone,'-',1) SUBSTRING_INDEX函数说明: subs ...

  4. springmvc的dispatchservlet初始化

    初始化做的事情,处理下controller的映射关系 https://blog.csdn.net/qq_38410730/article/details/79426673

  5. RTP实时传输协议

    RTP协议是包括一对协议:RTP和RTCP. RTP传输数据,RTCP传输控制信息. 一般基于UDP,RTP使用偶数端口,RTCP使用下一个奇数端口. 层次关系: APP -> RTP -> ...

  6. 2019春招——Vivo大数据开发工程师面经

    Vvio总共就一轮技术面+一轮HR面,技术面总体而言,比较宽泛,比较看中基础,面试的全程没有涉及简历上的东西(都准备好跟他扯项目了,感觉是抽取的题库...)具体内容如下: 1.熟悉Hadoop哪些组件 ...

  7. adb 常用命令-转载

    转自:https://blog.csdn.net/suxing_ing/article/details/54907860 显示当前运行的全部模拟器:adb devices 获取序列号:adb get- ...

  8. 课上补做:用C语言编程实现ls命令

    课上补做:用C语言编程实现ls命令 一.有关ls ls :用来打印当前目录或者制定目录的清单,显示出文件的一些信息等. ls -l:列出长数据串,包括文件的属性和权限等数据 ls -R:连同子目录一同 ...

  9. 朴素贝叶斯法(naive Bayes algorithm)

    对于给定的训练数据集,朴素贝叶斯法首先基于iid假设学习输入/输出的联合分布:然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验概率最大的输出y. 一.目标 设输入空间是n维向量的集合,输出空间为 ...

  10. linux 安装中文支持

    下载  fonts-chinese-3.02-12.el5.noarch.rpm fonts-ISO8859-2-75dpi-1.0-17.1.noarch.rpm 安装各种提示的依赖 安装 chkf ...