国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

解讀Django框架中的低層次緩存API

2019-11-25 17:08:21
字體:
來源:轉載
供稿:網友

有些時候,對整個經解析的頁面進行緩存并不會給你帶來太多好處,事實上可能會過猶不及。

比如說,也許你的站點所包含的一個視圖依賴幾個費時的查詢,每隔一段時間結果就會發生變化。 在這種情況下,使用站點級緩存或者視圖級緩存策略所提供的整頁緩存并不是最理想的,因為你可能不會想對整個結果進行緩存(因為一些數據經常變化),但你仍然會想對很少變化的部分進行緩存。

針對這樣的情況,Django提供了簡單低級的緩存API。 你可以通過這個API,以任何你需要的粒度來緩存對象。 你可以對所有能夠安全進行 pickle 處理的 Python 對象進行緩存: 字符串、字典和模型對象列表等等。 (查閱 Python 文檔可以了解到更多關于 pickling 的信息。)

緩存模塊django.core.cache擁有一個自動依據CACHE_BACKEND設置創建的django.core.cache對象。

>>> from django.core.cache import cache

基本的接口是 set(key, value, timeout_seconds) 和 get(key) :

>>> cache.set('my_key', 'hello, world!', 30)>>> cache.get('my_key')'hello, world!'

timeout_seconds 參數是可選的, 并且默認為前面講過的 CACHE_BACKEND 設置中的 timeout 參數.

如果緩存中不存在該對象,那么cache.get()會返回None。

# Wait 30 seconds for 'my_key' to expire...>>> cache.get('my_key')None

我們不建議在緩存中保存 None 常量,因為你將無法區分你保存的 None 變量及由返回值 None 所標識的緩存未命中。

cache.get() 接受一個 缺省 參數。 它指定了當緩存中不存在該對象時所返回的值:

>>> cache.get('my_key', 'has expired')'has expired'

使用add()方法來新增一個原來沒有的鍵值。 它接受的參數和set()一樣,但是并不去嘗試更新已經存在的鍵值。

>>> cache.set('add_key', 'Initial value')>>> cache.add('add_key', 'New value')>>> cache.get('add_key')'Initial value'

如果想確定add()是否成功添加了緩存值,你應該測試返回值。 成功返回True,失敗返回False。

還有個get_many()接口。 get_many() 所返回的字典包括了你所請求的存在于緩存中且未超時的所有鍵值。

>>> cache.set('a', 1)>>> cache.set('b', 2)>>> cache.set('c', 3)>>> cache.get_many(['a', 'b', 'c']){'a': 1, 'b': 2, 'c': 3}

最后,你可以用 cache.delete() 顯式地刪除關鍵字。

>>> cache.delete('a')

也可以使用incr()或者decr()來增加或者減少已經存在的鍵值。 默認情況下,增加或減少的值是1。可以用參數來制定其他值。 如果嘗試增減不存在的鍵值會拋出ValueError。

>>> cache.set('num', 1)>>> cache.incr('num')2>>> cache.incr('num', 10)12>>> cache.decr('num')11>>> cache.decr('num', 5)6

注意

incr()/decr()方法不是原子操作。 在支持原子增減的緩存后端上(最著名的是memcached),增減操作才是原子的。 然而,如果后端并不原生支持增減操作,也可以通過取值/更新兩步操作來實現。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乌海市| 海兴县| 石屏县| 读书| 墨玉县| 高密市| 长岛县| 云梦县| 绥中县| 泗水县| 章丘市| 西林县| 田林县| 都兰县| 巴塘县| 神池县| 平原县| 平塘县| 波密县| 庄河市| 滁州市| 柏乡县| 拉萨市| 密云县| 凯里市| 芷江| 霞浦县| 天门市| 神农架林区| 湖州市| 阳东县| 长葛市| 茌平县| 准格尔旗| 永修县| 农安县| 正定县| 通城县| 丹巴县| 怀来县| 二连浩特市|