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对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
May 08 Python
Python实现感知器模型、两层神经网络
Dec 19 Python
使用python 和 lint 删除项目无用资源的方法
Dec 20 Python
基于pycharm导入模块显示不存在的解决方法
Oct 13 Python
Django ORM 自定义 char 类型字段解析
Aug 09 Python
Python列表list常用内建函数实例小结
Oct 22 Python
如何使用Python脚本实现文件拷贝
Nov 20 Python
利用 Python ElementTree 生成 xml的实例
Mar 06 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
Apr 07 Python
TensorFLow 数学运算的示例代码
Apr 21 Python
如何实现更换Jupyter Notebook内核Python版本
May 18 Python
python语言的优势是什么
Jun 17 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
Linux下CoreSeek及PHP扩展模块的安装
2012/09/23 PHP
PHP Session 变量的使用方法详解与实例代码
2013/09/11 PHP
PHP防止表单重复提交的几种常用方法汇总
2014/08/19 PHP
php常用文件操作函数汇总
2014/11/22 PHP
是 WordPress 让 PHP 更流行了 而不是框架
2016/02/03 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
2016/10/28 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
2018/04/27 PHP
基于thinkphp6.0的success、error实现方法
2019/11/05 PHP
JQuery实现的在新窗口打开链接的方法小结
2010/04/22 Javascript
使用js写的一个简易的投票
2013/11/27 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
点击标签切换和自动切换DIV选项卡
2014/08/10 Javascript
js实现点击图片改变页面背景图的方法
2015/02/28 Javascript
JavaScript中的条件判断语句使用详解
2015/06/03 Javascript
angularjs自定义ng-model标签的属性
2016/01/21 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
angularJS深拷贝详解
2017/03/23 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
详解vue-loader在项目中是如何配置的
2018/06/04 Javascript
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
更优雅的微信小程序骨架屏实现详解
2019/08/07 Javascript
js实现图片跟随鼠标移动效果
2019/10/16 Javascript
[53:52]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python框架django基础指南
2016/09/08 Python
Python用 KNN 进行验证码识别的实现方法
2018/02/06 Python
深入flask之异步非堵塞实现代码示例
2018/07/31 Python
python从list列表中选出一个数和其对应的坐标方法
2019/07/20 Python
django实现模板中的字符串文字和自动转义
2020/03/31 Python
基于python 凸包问题的解决
2020/04/16 Python
ZWILLING双立人法国网上商店:德国刀具锅具厨具品牌
2019/08/28 全球购物
2016大学迎新欢迎词
2015/09/29 职场文书
医院岗前培训心得体会
2016/01/08 职场文书
Python turtle实现贪吃蛇游戏
2021/06/18 Python
Python+DeOldify实现老照片上色功能
2022/06/21 Python
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
2022/08/14 Servers
使用CSS实现音波加载效果
2023/05/07 HTML / CSS