码迷,mamicode.com
首页 > 其他好文 > 详细

redis之django-redis

时间:2019-07-14 19:51:31      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:返回   load   key   使用   pool   ffffff   import   cut   pass   

自定义连接池

这种方式跟普通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_connection
 
 
def 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 Response
 
from django.core.cache import cache
 
class 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 time
 
 
def 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_page
 
        urlpatterns = [
            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

 

redis之django-redis

标签:返回   load   key   使用   pool   ffffff   import   cut   pass   

原文地址:https://www.cnblogs.com/xiangxiaolin/p/11185258.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!