Django緩存

為什么使用緩存?以空間換時(shí)間。

https://docs.djangoproject.com/zh-hans/2.0/topics/cache/

(*)緩存框架的核心目標(biāo)

? ? -- 較少的代碼

? ? ????????緩存應(yīng)該盡可能快

????????????因此圍繞緩存后端的所有框架代碼應(yīng)該保持在絕對(duì)最小值,特別是對(duì)于獲取操作

? ? -- 一致性

????????????緩存API應(yīng)該是提供跨越不同緩存后端的一致接口

? ? -- 可擴(kuò)展性

????????????基于開發(fā)人員的需求,緩存API應(yīng)該可以在應(yīng)用程序級(jí)別擴(kuò)展

----------------------------------------------------------------------------------------------------------------------------------

緩存

1.django內(nèi)置了緩存框架,并提供了幾種常用的緩存

(1)基于Memcached緩存,不用了

(2)使用數(shù)據(jù)庫(kù)進(jìn)行緩存(一般用resis,Django里面沒有內(nèi)置redis緩存,所以需要自己安裝第三方插件),現(xiàn)在一般是用這個(gè),數(shù)據(jù)庫(kù)中的數(shù)據(jù)關(guān)系越復(fù)雜,緩存效率越低,一張表中有十萬條數(shù)據(jù)可能比兩萬條數(shù)據(jù)級(jí)聯(lián)了三張表效率還要高。

(3)使用文件進(jìn)行存,文件進(jìn)行取

(4)使用本地內(nèi)存進(jìn)行緩存,速度快,但是容易丟失,而且別人訪問不了你電腦里的緩存。

(5)提供緩存擴(kuò)展接口(也就是第三方插件)

--------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------

2. Django中實(shí)現(xiàn)用redis做緩存

????使用Redis做緩存?常見的有兩個(gè)實(shí)現(xiàn)

(1)django-redis

????http://django-redis-chs.readthedocs.io/zh_CN/latest/#django

(2)django-redis-cache

·https://pypi.python.org/pypi/django-redis-cache/

-----------------------------------------------------------------------------------------------------------------------------------

緩存插件? ? 安裝——》配置——》使用

(1)安裝

pip install django-redis / django-redis-cache

(2)配置

????和內(nèi)置的緩存配置基本一致(將下面代碼直接粘貼到settings文件中)

CACHES={"default": {"BACKEND":"django_redis.cache.RedisCache","LOCATION":"redis://127.0.0.1:6379/1","OPTIONS": {"CLIENT_CLASS":"django_redis.client.DefaultClient",? ? ? ? }? ? }}

(3)用法和內(nèi)置緩存使用一樣

創(chuàng)建緩存表

python manage.py createcachetable [table_name]

緩存配置

CACHES={'default': {'BACKEND':'django.core.cache.backends.db.DatabaseCache','LOCATION':'my_cache_table','TIMEOUT':'60','OPTIONS': {'MAX_ENTRIES':'300',? ? ? ? },'KEY_PREFIX':'rock','VERSION':'1',? ? }}

緩存使用

在視圖中使用(使用最多的場(chǎng)景)

@cache_page()

time 秒 60*5 緩存五分鐘

cache 緩存配置, 默認(rèn)default,

key_prefix 前置字符串

緩存底層

----- 獲取cache

fromdjango.core.cacheimportcachescache=caches['cache_name']

----- 獲取cache

fromdjango.core.cacheimportcache

----緩存操作

????cache.set

? ? ?參數(shù)有:key

? ? ? ? ? ? ????? value

? ? ? ? ? ? ????? timeout(緩存時(shí)長(zhǎng)) 過了緩存時(shí)長(zhǎng)給你刷新數(shù)據(jù),否則一直走緩存

????get

????add

get_or _set

????get_many

????set_many

????delete

????delete_many

????clear

????incr 增加

????????????incr(key, value) key對(duì)應(yīng)的值上添加 value

????decr 減少

????????????decr(key, value) key對(duì)應(yīng)的值上減少value

????????????如果value不寫,默認(rèn)變更為1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 緩存是為了保存那些需要很多計(jì)算資源的結(jié)果,這樣的話就不必在下次重復(fù)消耗計(jì)算資源。 下面我們用偽代碼,來解釋緩存怎樣...
    SingleDiego閱讀 2,961評(píng)論 0 0
  • 緩存 計(jì)算機(jī)的讀寫速度在不同的硬件中是不同的,通常讀寫速度由慢到快順序?yàn)椋河脖P文件 > 內(nèi)存空間 > 寄存器【數(shù)據(jù)...
    妄想成為正太的包蜀黍閱讀 2,205評(píng)論 0 6
  • 前言 如果使用緩存中間件(在settings里面加上設(shè)置)那么中間件將會(huì)基于URL對(duì)Django的頁(yè)面進(jìn)行緩存。啟...
    LumiaXu閱讀 1,110評(píng)論 0 0
  • 緩存就是將你常用的數(shù)據(jù)放在內(nèi)存里面,方便大量的訪問,每次請(qǐng)求過來之后,django都會(huì)優(yōu)先訪問緩存,看看緩存里面有...
    戴維得閱讀 585評(píng)論 0 0
  • 文/ 達(dá)文西陳 從那以后,每年的六月,我的失憶就開始了。 我常常在想,在我腦子的某一道腦回里,一定缺少了之后六月份...
    達(dá)文西陳閱讀 607評(píng)論 2 3

友情鏈接更多精彩內(nèi)容