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中使用中文的方法
Feb 19 Python
python计算最大优先级队列实例
Dec 18 Python
Python 基础教程之str和repr的详解
Aug 20 Python
基于python socketserver框架全面解析
Sep 21 Python
神经网络(BP)算法Python实现及应用
Apr 16 Python
Python3.6笔记之将程序运行结果输出到文件的方法
Apr 22 Python
vue.js实现输入框输入值内容实时响应变化示例
Jul 07 Python
Python2实现的图片文本识别功能详解
Jul 11 Python
python 定义n个变量方法 (变量声明自动化)
Nov 10 Python
Python面向对象之类和对象实例详解
Dec 10 Python
Python Pywavelet 小波阈值实例
Jan 09 Python
python数据归一化及三种方法详解
Aug 06 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 和 HTML
2006/10/09 PHP
openflashchart 2.0 简单案例php版
2012/05/21 PHP
php引用传值实例详解学习
2013/11/06 PHP
PHP中使用GD库创建圆形饼图的例子
2014/11/19 PHP
php在apache环境下实现gzip配置方法
2015/04/02 PHP
认识延迟时间为0的setTimeout
2008/05/16 Javascript
JavaScript异步调用定时方法并停止该方法实现代码
2012/03/16 Javascript
javascript中数组的sort()方法的使用介绍
2013/12/18 Javascript
JavaScript中for-in遍历方式示例介绍
2014/02/11 Javascript
js获取当前日期时间及其它日期操作汇总
2016/03/08 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
2016/06/13 Javascript
异步加载JS、CSS代码(推荐)
2016/06/15 Javascript
jquery+CSS3实现3D拖拽相册效果
2016/07/18 Javascript
AngularJS递归指令实现Tree View效果示例
2016/11/07 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
详解Vue2.0里过滤器容易踩到的坑
2017/06/01 Javascript
js实现图片懒加载效果
2017/07/17 Javascript
Vue2.0设置全局样式(less/sass和css)
2017/11/18 Javascript
layer关闭当前窗口页面以及确认取消按钮的方法
2019/09/09 Javascript
原生JS实现留言板
2020/03/26 Javascript
功能完善的小程序日历组件的实现
2020/03/31 Javascript
Windows下python2.7.8安装图文教程
2016/05/26 Python
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
python Web开发你要理解的WSGI & uwsgi详解
2018/08/01 Python
利用python打开摄像头及颜色检测方法
2018/08/03 Python
Python如何实现转换URL详解
2019/07/02 Python
pyenv与virtualenv安装实现python多版本多项目管理
2019/08/17 Python
深入浅析Python 中的sklearn模型选择
2019/10/12 Python
Python使用Excel将数据写入多个sheet
2020/05/16 Python
阿玛瑞酒店中文官方网站:Amari.com
2018/02/13 全球购物
英国领先的维生素和补充剂品牌:Higher Nature
2019/08/26 全球购物
Douglas意大利官网:购买香水和化妆品
2020/05/27 全球购物
观看焦裕禄观后感
2015/06/09 职场文书
Django项目如何正确配置日志(logging)
2021/04/29 Python
Java用自带的Image IO给图片添加水印
2021/06/15 Java/Android