redis之django-redis的简单缓存使用


Posted in Python onJune 07, 2018

本文介绍了redis之django-redis的简单缓存使用,分享给大家,具体如下:

自定义连接池

这种方式跟普通py文件操作redis一样,代码如下:

views.py

import redis
from django.shortcuts import render,HttpResponse
from utils.redis_pool import POOL

def index(request):
  conn = redis.Redis(connection_pool=POOL)
  conn.hset('kkk','age',18)

  return HttpResponse('设置成功')
def order(request):
  conn = redis.Redis(connection_pool=POOL)
  conn.hget('kkk','age')

  return HttpResponse('获取成功')

通过第三方组件操作redis

安装

pip3 install django-redis

配置

settings.py

# redis配置
CACHES = {
  "default": {
    "BACKEND": "django_redis.cache.RedisCache",
    "LOCATION": "redis://127.0.0.1:6379",
    "OPTIONS": {
      "CLIENT_CLASS": "django_redis.client.DefaultClient",
      "CONNECTION_POOL_KWARGS": {"max_connections": 100}
      # "PASSWORD": "密码",
    }
  }
}

使用

views.py

import redis
from django.shortcuts import render,HttpResponse
from django_redis import get_redis_connection


def index(request):
  conn = get_redis_connection("default")
  return HttpResponse('设置成功')
def order(request):
  conn = get_redis_connection("default")
  return HttpResponse('获取成功')

全站缓存

使用中间件,经过一系列的认证等操作,如果内容在缓存中存在,则使用FetchFromCacheMiddleware获取内容并返回给用户,

当返回给用户之前,判断缓存中是否已经存在,如果不存在则UpdateCacheMiddleware会将缓存保存至缓存,从而实现全站缓存

MIDDLEWARE = [
    'django.middleware.cache.UpdateCacheMiddleware',
    # 其他中间件...
    'django.middleware.cache.FetchFromCacheMiddleware',
  ]

一个放在最上面,一个放在最下面

views.py

from django.shortcuts import render,HttpResponse
import time


def index(request):
  ctime = str(time.time())
  return HttpResponse(ctime)

def order(request):
  ctime = str(time.time())
  return HttpResponse(ctime)

配置了全站缓存,在不同的时间(一定范围内),上面两个视图返回的时间是一样的,都是缓存时的时间

单独视图缓存

方式一:通过装饰器

from django.views.decorators.cache import cache_page

    @cache_page(60 * 15)
    def my_view(request):
      ...

方式二:通过url

from django.views.decorators.cache import cache_page

    urlpatterns = [
      url(r'^foo/([0-9]{1,2})/$', cache_page(60 * 15)(my_view)),
    ]

局部页面缓存

1. 引入TemplateTag

{% load cache %}

2. 使用缓存

{% cache 5000 缓存的key %}
    缓存内容
{% endcache %}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现向ppt文件里插入新幻灯片页面的方法
Apr 28 Python
python2.x实现人民币转大写人民币
Jun 20 Python
pandas分别写入excel的不同sheet方法
Dec 11 Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
May 13 Python
python中class的定义及使用教程
Sep 18 Python
在tensorflow中实现去除不足一个batch的数据
Jan 20 Python
如何使用python socket模块实现简单的文件下载
Sep 04 Python
python 装饰器的实际作用有哪些
Sep 07 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
Feb 01 Python
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
Nov 11 Python
利用 Python 的 Pandas和 NumPy 库来清理数据
Apr 13 Python
PYTHON 使用 Pandas 删除某列指定值所在的行
Apr 28 Python
PHP实现发送和接收JSON请求
Jun 07 #Python
使用python画个小猪佩奇的示例代码
Jun 06 #Python
python re模块的高级用法详解
Jun 06 #Python
Python实现的爬取网易动态评论操作示例
Jun 06 #Python
Python3实现的爬虫爬取数据并存入mysql数据库操作示例
Jun 06 #Python
利用python如何处理百万条数据(适用java新手)
Jun 06 #Python
Python3实现的Mysql数据库操作封装类
Jun 06 #Python
You might like
php split汉字
2009/06/05 PHP
php学习笔记 数组遍历实现代码
2011/06/09 PHP
mysql,mysqli,PDO的各自不同介绍
2012/09/19 PHP
apache配置虚拟主机的方法详解
2013/06/17 PHP
php object转数组示例
2014/01/15 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
2016/09/30 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
Javascript String对象扩展HTML编码和解码的方法
2009/06/02 Javascript
完美解决jQuery 鼠标快速滑过后,会执行多次滑出的问题
2016/12/08 Javascript
Vue.js中extend选项和delimiters选项的比较
2017/07/17 Javascript
浅谈super-vuex使用体验
2018/06/25 Javascript
layui 表格的属性的显示转换方法
2018/08/14 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
深入koa-bodyparser原理解析
2019/01/16 Javascript
JavaScript简单编程实例学习
2020/02/14 Javascript
Vue 实现拨打电话操作
2020/11/16 Javascript
python分析apache访问日志脚本分享
2015/02/26 Python
python使用calendar输出指定年份全年日历的方法
2015/04/04 Python
numpy.linspace 生成等差数组的方法
2018/07/02 Python
详解如何用django实现redirect的几种方法总结
2018/11/22 Python
对python的bytes类型数据split分割切片方法
2018/12/04 Python
python中对数据进行各种排序的方法
2019/07/02 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
2020/02/12 Python
Python bytes string相互转换过程解析
2020/03/05 Python
Python如何实现远程方法调用
2020/08/07 Python
HTML5 FileReader对象的具体使用方法
2020/05/22 HTML / CSS
速比涛英国官网:Speedo英国
2019/07/15 全球购物
大学生入党思想汇报
2014/01/01 职场文书
普通话宣传标语
2014/06/26 职场文书
中学教师暑期培训方案
2014/08/27 职场文书
法定代表人身份证明书
2014/09/10 职场文书
基层工作经历证明
2015/06/19 职场文书
《岳阳楼记》原文、译文赏析
2019/09/10 职场文书
初中生入团申请书范文(五篇)
2019/10/16 职场文书
CSS 还能这样玩?奇思妙想渐变的艺术
2021/04/27 HTML / CSS
Python使用protobuf序列化和反序列化的实现
2021/05/19 Python