自定義連接池
這種方式跟普通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)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載。
THE END
喜歡就支持一下吧
相關(guān)推薦