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. vs2017 asp.net 网站发布问题 (发布路径下含源码文件)

    使用vs2010版本,网站发布后会自动将源码发不为.dll程序集,但vs2017需要进行设置,其他版本没有试过. vs2017网站发布: 1. 2. 这里给一个你想用的名字,之后它会出现在你的程序文件 ...

  2. canvas画小叮当

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. lua 匹配空白符

    lua 支持的所有字符类: .     任意字符%s 空白符 空白字符一般包括空格.换行符\n.制表符\t以及回到行首符\r%p 标点字符%c 控制字符%d 数字%x 十六进制数字%z 代表0的字符% ...

  4. java虚拟机的学习书籍推荐

    javaEE开发已然是一个老生常谈的话题了,但经典之所以会成为经典,就是因为有可重复琢磨之处,每一次的反复推敲都会有不一样的收获.如果你不满足于做一个只会写if…else…的Java程序员,而是希望更 ...

  5. java8_api_nio

    NIO-1    nio的概念    Buffer的属性    Buffer中数据的读写        用以提高IO处理数据的性能问题,之前io里的单位是Byte(java程序向流中写入byte或相反 ...

  6. 学习Python3 天眼查 爬虫

    刚开始学习Python,不愿意看基础,记忆不好,那些语法记不住,直接上个项目,这样比较深刻 刚好公司有个情况要查企业的信息,就想做个爬虫吧,有验证码的不愿意搞,那是个老大难问题,就选择了天眼查 过程都 ...

  7. layui:数据表格如何合并单元格

    layui.use('table', function () { var table = layui.table; table.render({ elem: '#applyTab' , url: '$ ...

  8. 什么是HDR?

    参考:https://baijiahao.baidu.com/s?id=1606763887374415267&wfr=spider&for=pc HDR——即高动态范围图像(High ...

  9. 【Centos】Postgresql连接测试(Perl和Ruby)

    Centos安装了PostgreSQL之后,将考虑如何让Perl与Ruby连接它. Perl连接方式 1,安装Perl的数据库连接包 perl-DBD-Pg perl-DBI yum install ...

  10. C#-IniFiles文件配置连接数据库

    第一步:创建一个INI文件放在程序下的bin下Debug下 第二步:添加一个类在程序中,进行读写操作 public class IniFiles { public string inipath; // ...