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('獲取成功')
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('..')

全站緩存

使用中間件,經(jīng)過一系列的認證等操作,如果內(nèi)容在緩存中存在,則使用FetchFromCacheMiddleware獲取內(nèi)容并返回給用戶,
當返回給用戶之前,判斷緩存中是否已經(jīng)存在,如果不存在則UpdateCacheMiddleware會將緩存保存至緩存,從而實現(xiàn)全站緩存

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)

配置了全站緩存,在不同的時間(一定范圍內(nèi)),上面兩個視圖返回的時間是一樣的,都是緩存時的時間

單獨視圖緩存

方式一:通過裝飾器

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?%} ???????緩存內(nèi)容 {%?endcache?%}

更多redis知識請關(guān)注redis入門教程欄目。

以上就是

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊13 分享