1. 程式人生 > 資料庫 >redis之django-redis的簡單快取使用

redis之django-redis的簡單快取使用

本文介紹了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 %}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。