Maison > base de données > Redis > Utilisation de Django-redis de Redis

Utilisation de Django-redis de Redis

Libérer: 2020-05-20 09:02:50
avant
2822 Les gens l'ont consulté

Utilisation de Django-redis de Redis

Pool de connexions personnalisé

Cette méthode est la même que l'opération normale de fichier py redis, le code est le suivant

vues. 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('获取成功')
Copier après la connexion

Opération redis via des composants tiers

Installation

pip3 install django-redis
Copier après la connexion

Configuration :

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": "密码",
        }
    }
}
Copier après la connexion

Utiliser :

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('获取成功')
Copier après la connexion
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('..')
Copier après la connexion

Cache complet du site

Utiliser le middleware, après une série d'authentifications et d'autres opérations, si le contenu existe dans le cache, utilisez FetchFromCacheMiddleware Récupérez le contenu et renvoyez-le à l'utilisateur
Avant de le renvoyer à l'utilisateur, déterminez s'il existe déjà dans le cache. S'il n'existe pas, UpdateCacheMiddleware enregistrera ainsi le cache dans le cache. réaliser la mise en cache du site complet

MIDDLEWARE = [
        'django.middleware.cache.UpdateCacheMiddleware',
        # 其他中间件...
        'django.middleware.cache.FetchFromCacheMiddleware',
    ]
Copier après la connexion

Un endroit en haut, celui du bas

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)
Copier après la connexion

est configuré avec un cache du site complet à différents endroits. times (dans une certaine plage), l'heure renvoyée par les deux vues ci-dessus est la même, sont l'heure de la mise en cache

Mise en cache des vues individuelles

Première méthode : via le décorateur

from django.views.decorators.cache import cache_page
 
        @cache_page(60 * 15)
        def my_view(request):
            ...
Copier après la connexion

Méthode deux : via l'url

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

Mise en cache partielle des pages

1. Introduire TemplateTag

{% load cache %}
Copier après la connexion

2. 🎜>

{% cache 5000 缓存的key %}
       缓存内容
{% endcache %}
Copier après la connexion

Pour plus de connaissances sur Redis, veuillez prêter attention au Tutoriel d'introduction à Redis

Colonne.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal