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操作json数据的一个简单例子
Apr 17 Python
Python编程中time模块的一些关键用法解析
Jan 19 Python
一张图带我们入门Python基础教程
Feb 05 Python
Python连接数据库学习之DB-API详解
Feb 07 Python
一个基于flask的web应用诞生 组织结构调整(7)
Apr 11 Python
python 垃圾收集机制的实例详解
Aug 20 Python
Python动刷新抢12306火车票的代码(附源码)
Jan 24 Python
浅析python中numpy包中的argsort函数的使用
Aug 30 Python
python装饰器使用实例详解
Dec 14 Python
python编写一个会算账的脚本的示例代码
Jun 02 Python
python爬虫中采集中遇到的问题整理
Nov 27 Python
Pycharm 设置默认解释器路径和编码格式的操作
Feb 05 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 数字左侧自动补0
2008/03/31 PHP
smarty的保留变量问题
2008/10/23 PHP
同台服务器使用缓存APC效率高于Memcached的演示代码
2010/02/16 PHP
php源码加密 仿微盾PHP加密专家(PHPCodeLock)
2010/05/06 PHP
有关php运算符的知识大全
2011/11/03 PHP
强制PHP命令行脚本单进程运行的方法
2014/04/15 PHP
重新认识php array_merge函数
2014/08/31 PHP
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
2011/06/28 Javascript
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
2013/05/24 Javascript
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
Jquery动态添加及删除页面节点元素示例代码
2014/06/16 Javascript
Javascript动画的实现原理浅析
2015/03/02 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
jquery实现鼠标滑过后动态图片提示效果实例
2015/08/10 Javascript
JavaScript File API实现文件上传预览
2016/02/02 Javascript
针对BootStrap中tabs控件的美化和完善(推荐)
2016/07/06 Javascript
JavaScript实现通过select标签跳转网页的方法
2016/09/29 Javascript
浅析bootstrap原理及优缺点
2017/03/19 Javascript
详解VUE-地区选择器(V-Distpicker)组件使用心得
2018/05/07 Javascript
可能被忽略的一些JavaScript数组方法细节
2019/02/28 Javascript
Python实现字典的key和values的交换
2015/08/04 Python
各个系统下的Python解释器相关安装方法
2015/10/12 Python
Python中MySQLdb和torndb模块对MySQL的断连问题处理
2015/11/09 Python
Python 基础知识之字符串处理
2017/01/06 Python
Django组件content-type使用方法详解
2019/07/19 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
2020/05/15 Python
Kears 使用:通过回调函数保存最佳准确率下的模型操作
2020/06/17 Python
Python Opencv轮廓常用操作代码实例解析
2020/09/01 Python
Python unittest discover批量执行代码实例
2020/09/08 Python
美国折扣网站:jClub
2017/08/07 全球购物
大学生思想汇报范文
2013/12/31 职场文书
优秀教师事迹简介
2014/02/02 职场文书
数学检讨书1000字
2014/02/24 职场文书
体操比赛口号
2014/06/10 职场文书
单位计划生育责任书
2015/05/09 职场文书
使用Redis实现秒杀功能的简单方法
2021/05/08 Redis