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中DJANGO简单测试实例
May 11 Python
Django框架中数据的连锁查询和限制返回数据的方法
Jul 17 Python
python的mysqldb安装步骤详解
Aug 14 Python
Python文件和流(实例讲解)
Sep 12 Python
Python实现拷贝/删除文件夹的方法详解
Aug 29 Python
详解Python 定时框架 Apscheduler原理及安装过程
Jun 14 Python
解析python的局部变量和全局变量
Aug 15 Python
Python 实现Serial 与STM32J进行串口通讯
Dec 18 Python
Python读取文件内容为字符串的方法(多种方法详解)
Mar 04 Python
解决python存数据库速度太慢的问题
Apr 23 Python
Python pandas之求和运算和非空值个数统计
Aug 07 Python
Python3的进程和线程你了解吗
Mar 16 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 CodeIgniter分页实例及多条件查询解决方案(推荐)
2017/05/20 PHP
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
Javascript 静态页面实现随机显示广告的办法
2010/11/17 Javascript
js 判断脚本加载完毕的代码
2011/07/13 Javascript
IE6浏览器下resize事件被执行了多次解决方法
2012/12/11 Javascript
JavaScript中“基本类型”之争小结
2013/01/03 Javascript
利用JS进行图片的切换即特效展示图片
2013/12/03 Javascript
js从Cookies里面取值的简单实现
2014/06/30 Javascript
AngularJS 实现弹性盒子布局的方法
2016/08/30 Javascript
js断点调试经验分享
2017/12/08 Javascript
mint-ui 时间插件使用及获取选择值的方法
2018/02/09 Javascript
vue-router传递参数的几种方式实例详解
2018/11/13 Javascript
vue-cli3 karma单元测试的实现
2019/01/18 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
2019/03/19 Javascript
JavaScript工具库之Lodash详解
2019/06/15 Javascript
JS实现压缩上传图片base64长度功能
2019/12/03 Javascript
[03:49]辉夜杯现场龙骑士COSER秀情商“我喜欢芬队!”
2015/12/27 DOTA
python通过加号运算符操作列表的方法
2015/07/28 Python
python3使用smtplib实现发送邮件功能
2018/05/22 Python
Python内存读写操作示例
2018/07/18 Python
python 获取毫秒数,计算调用时长的方法
2019/02/20 Python
Django 创建/删除用户的示例代码
2019/07/24 Python
Python中Flask-RESTful编写API接口(小白入门)
2019/12/11 Python
使用TensorFlow直接获取处理MNIST数据方式
2020/02/10 Python
tensorflow多维张量计算实例
2020/02/11 Python
基于python检查SSL证书到期情况代码实例
2020/04/04 Python
对python中list的五种查找方法说明
2020/07/13 Python
带你学习Python如何实现回归树模型
2020/07/16 Python
Python模块zipfile原理及使用方法详解
2020/08/04 Python
小学庆六一活动方案
2014/02/28 职场文书
城管年度个人总结
2015/02/28 职场文书
综合测评自我评价
2015/03/06 职场文书
2015年学校教研室主任工作总结
2015/07/20 职场文书
公安干警正风肃纪心得体会
2016/01/15 职场文书
2016廉洁从政心得体会
2016/01/19 职场文书
2017春节晚会开幕词
2016/03/03 职场文书