自定义连接池

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

views.py

 1 import redis
 2 from django.shortcuts import render,HttpResponse
 3 from utils.redis_pool import POOL
 4
 5 def index(request):
 6     conn = redis.Redis(connection_pool=POOL)
 7     conn.hset('kkk','age',18)
 8
 9     return HttpResponse('设置成功')
10 def order(request):
11     conn = redis.Redis(connection_pool=POOL)
12     conn.hget('kkk','age')
13
14     return HttpResponse('获取成功')

View Code

通过第三方组件操作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": "密码",
        }}
}

View Code

使用

views.py

import redis
from django.shortcuts import render,HttpResponse
from django_redis import get_redis_connectiondef index(request):conn = get_redis_connection("default")return HttpResponse('设置成功')
def order(request):conn = get_redis_connection("default")return HttpResponse('获取成功')

View Code

from rest_framework.views import APIView
from rest_framework.response import Responsefrom django.core.cache import cacheclass OrderView(APIView):def get(self,request,*args,**kwargs):# conn = get_redis_connection('default')cache.set('a','b')print(cache.get('a'))return Response('..')

View Code

全站缓存

使用中间件,经过一系列的认证等操作,如果内容在缓存中存在,则使用FetchFromCacheMiddleware获取内容并返回给用户,
当返回给用户之前,判断缓存中是否已经存在,如果不存在则UpdateCacheMiddleware会将缓存保存至缓存,从而实现全站缓存

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

View Code

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

views.py

from django.shortcuts import render,HttpResponse
import timedef index(request):ctime = str(time.time())return HttpResponse(ctime)def order(request):ctime = str(time.time())return HttpResponse(ctime)

View Code

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

单独视图缓存

方式一:通过装饰器

from django.views.decorators.cache import cache_page@cache_page(60 * 15)def my_view(request):...

View Code

方式二:通过url

from django.views.decorators.cache import cache_pageurlpatterns = [url(r'^foo/([0-9]{1,2})/$', cache_page(60 * 15)(my_view)),]

View Code

局部页面缓存

1. 引入TemplateTag

{% load cache %}

2. 使用缓存

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

View Code

转载于:https://www.cnblogs.com/xiangxiaolin/p/11185258.html

redis之django-redis相关推荐

  1. Linux安装Nginx、Redis、django

    部署Nginx 部署Redis 安装Redis redis事物 服务器管理命令 慢查询日志 主从复制 Redis-Sentinel cluser分片集群 安装python 操作redis数据 部署Dj ...

  2. Django redis的使用

    一 简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted ...

  3. django redis

    本文目录 一 简介 二 redis的安装和使用 三 Python操作Redis之安装和支持存储类型 四 Python操作Redis之普通连接 四 Python操作Redis之连接池 五 操作之Stri ...

  4. Celery+django+redis异步执行任务

    Celery+django+redis异步执行任务 本文用到的各工具版本: celery 4.0.2 django 1.10.3 redis 3.2.6 特别注意: 如果你的项目是django框架,那 ...

  5. 通过Python利用ADSL服务器和tinyproxy构建数据自己的动态代理IP池,用django+redis做web服务,提供IP接口

    应公司业务需求需要在一些地方使用代理,要求连通率高,速度快,最主要的还要便宜,对比多家供应商后,最后还是决定自购拨号服务搭建代理IP池. 需要配置:1.一台或多台adsl服务器(用以提供IP,可网上购 ...

  6. Redis 配置文件介绍——redis.conf

    Units单位 # Note that in order to read the configuration file, Redis must be # started with the file p ...

  7. python redis连接池获取后关闭_python通过连接池连接redis,操作redis队列

    在每次使用redis都进行连接的话会拉低redis的效率,都知道redis是基于内存的数据库,效率贼高,所以每次进行连接比真正使用消耗的资源和时间还多.所以为了节省资源,减少多次连接损耗,连接池的作用 ...

  8. php redis管理系统,php+redis实现小型的用户管理系统

    1.redis.php ,用于连接redis数据库 //实例化 $redis = new Redis(); //连接服务器 $redis->connect("localhost&quo ...

  9. 深入剖析Redis系列(七) - Redis数据结构之列表

    前言 列表(list)类型是用来存储多个 有序 的 字符串.在 Redis 中,可以对列表的 两端 进行 插入(push)和 弹出(pop)操作,还可以获取 指定范围 的 元素列表.获取 指定索引下标 ...

  10. redis(二)redis实战 使用redis进行文章的排序

    2019独角兽企业重金招聘Python工程师标准>>> http://www.beckbi.cn/?p=172 redis实战使用redis进行文章的排序 转载于:https://m ...

最新文章

  1. Java项目:农资采购销售系统(java+SSM+Easyui+maven+Mysql)
  2. 友盟统计--注意事项
  3. 内存:你跑慢点行不行?CPU:跑慢点你养我吗?内存:我不管!
  4. python中truncate的用法_在Python中操作文件之truncate()方法的使用教程
  5. 【Java】浅析八种基本类型和包装类型
  6. 【DevOps】做个愉快的DevOps之XenServer自动化管理(1)
  7. Windows Server 2016 安装OpenSSH Server,并设置密钥
  8. Atitit..文件上传组件选型and最佳实践总结(3)----断点续传控件的实现
  9. JAVA毕设项目图书馆预约占座系统(java+VUE+Mybatis+Maven+Mysql)
  10. android社交软件源码,原生仿微信社交社区即时通讯聊天双端APP源码开源 带PC客户端...
  11. 程序设计题大病:劝你不要买未来教育的Python二级书
  12. 测绘——利用CASS及数据库批量导出/修改/更新地籍信息
  13. DCMTK各模块说明
  14. python pyhook监听扫码_Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
  15. vs2019控件灰化无法使用怎么解决
  16. c语言怎样识别字母大小写,c语言islower()函数如何判断字符是否为小写字母
  17. 推荐一款串口调试助手(win10,无广告,功能齐全,操作简单)
  18. Gitter:高颜值GitHub小程序客户端诞生记
  19. postgresql 中文azw3_制作mobi格式的PostgreSQL文档
  20. perf: interrupt took too long

热门文章

  1. 使用C语言编程求解: 1 - 1/2 + 1/3 - 1/4 + 1/5 - ... + 1/99 - 1/100 的值。
  2. Django之ORM的增删改查
  3. hikari如何切换数据源_spring boot+mybatis 多数据源切换(实例讲解)
  4. coap 返回版本信息_CoAP 协议解析说明(转)
  5. Python3.x+pycharm+Anaconda中缩小打包的.exe体积的方法
  6. 嵌入式linux驱动开发答辩问题,嵌入式Linux驱动工程师/BSP开发工程师面试笔试题集锦...
  7. 鸿蒙系统适配机型_余承东:华为手机鸿蒙系统体验比安卓更好,主流应用已完成适配...
  8. 手势识别器GestureDetector
  9. 装文件存储服务器Fastdfs
  10. android studio单个工程文件的代理设置