最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2015年07月24日 10:20:27   投稿:goldensun  
這篇文章主要介紹了解讀Django框架中的低層次緩存API,Django是最具人氣的Python web開發(fā)框架,需要的朋友可以參考下

有些時(shí)候,對(duì)整個(gè)經(jīng)解析的頁面進(jìn)行緩存并不會(huì)給你帶來太多好處,事實(shí)上可能會(huì)過猶不及。

比如說,也許你的站點(diǎn)所包含的一個(gè)視圖依賴幾個(gè)費(fèi)時(shí)的查詢,每隔一段時(shí)間結(jié)果就會(huì)發(fā)生變化。 在這種情況下,使用站點(diǎn)級(jí)緩存或者視圖級(jí)緩存策略所提供的整頁緩存并不是最理想的,因?yàn)槟憧赡懿粫?huì)想對(duì)整個(gè)結(jié)果進(jìn)行緩存(因?yàn)橐恍?shù)據(jù)經(jīng)常變化),但你仍然會(huì)想對(duì)很少變化的部分進(jìn)行緩存。

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

緩存模塊django.core.cache擁有一個(gè)自動(dòng)依據(jù)CACHE_BACKEND設(shè)置創(chuàng)建的django.core.cache對(duì)象。

>>> 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 參數(shù)是可選的, 并且默認(rèn)為前面講過的 CACHE_BACKEND 設(shè)置中的 timeout 參數(shù).

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

# Wait 30 seconds for 'my_key' to expire...

>>> cache.get('my_key')
None

我們不建議在緩存中保存 None 常量,因?yàn)槟銓o法區(qū)分你保存的 None 變量及由返回值 None 所標(biāo)識(shí)的緩存未命中。

cache.get() 接受一個(gè) 缺省 參數(shù)。 它指定了當(dāng)緩存中不存在該對(duì)象時(shí)所返回的值:

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

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

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

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

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

>>> 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() 顯式地刪除關(guān)鍵字。

>>> cache.delete('a')

也可以使用incr()或者decr()來增加或者減少已經(jīng)存在的鍵值。 默認(rèn)情況下,增加或減少的值是1??梢杂脜?shù)來制定其他值。 如果嘗試增減不存在的鍵值會(huì)拋出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),增減操作才是原子的。 然而,如果后端并不原生支持增減操作,也可以通過取值/更新兩步操作來實(shí)現(xiàn)。

相關(guān)文章

  • 基于pycharm導(dǎo)入模塊顯示不存在的解決方法

    基于pycharm導(dǎo)入模塊顯示不存在的解決方法

    今天小編就為大家分享一篇基于pycharm導(dǎo)入模塊顯示不存在的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 在Python中COM口的調(diào)用方法

    在Python中COM口的調(diào)用方法

    今天小編就為大家分享一篇在Python中COM口的調(diào)用方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python基礎(chǔ)之字典

    python基礎(chǔ)之字典

    這篇文章主要介紹了python的字典,實(shí)例分析了Python中返回一個(gè)返回值與多個(gè)返回值的方法,需要的朋友可以參考下
    2021-10-10
  • python如何定義帶參數(shù)的裝飾器

    python如何定義帶參數(shù)的裝飾器

    這篇文章主要為大家詳細(xì)介紹了python如何定義帶參數(shù)的裝飾器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Python和GO語言實(shí)現(xiàn)的消息摘要算法示例

    Python和GO語言實(shí)現(xiàn)的消息摘要算法示例

    這篇文章主要介紹了Python和GO語言實(shí)現(xiàn)的消息摘要算法示例,本文講解了python消息摘要示例、go語言消息摘要示例及各自的運(yùn)行效果,需要的朋友可以參考下
    2015-03-03
  • 使用Python爬取Json數(shù)據(jù)的示例代碼

    使用Python爬取Json數(shù)據(jù)的示例代碼

    這篇文章主要介紹了使用Python爬取Json數(shù)據(jù)的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • 多個(gè)python文件調(diào)用logging模塊報(bào)錯(cuò)誤

    多個(gè)python文件調(diào)用logging模塊報(bào)錯(cuò)誤

    這篇文章主要介紹了多個(gè)python文件調(diào)用logging模塊產(chǎn)生錯(cuò)誤,需要的朋友可以參考下
    2020-02-02
  • Python使用PyPDF2和ReportLab操作PDF文件的詳細(xì)指南

    Python使用PyPDF2和ReportLab操作PDF文件的詳細(xì)指南

    在日常工作和項(xiàng)目中,PDF 文件處理是個(gè)常見需求,不論是合并報(bào)告、加密文檔、填充表單,還是生成發(fā)票,Python 中有許多用于操作 PDF 文件的庫,其中 PyPDF2 和 ReportLab 是兩個(gè)廣泛使用的工具,本文給大家介紹了Python使用PyPDF2和ReportLab操作PDF文件的詳細(xì)指南
    2025-01-01
  • Python使用wget實(shí)現(xiàn)下載網(wǎng)絡(luò)文件功能示例

    Python使用wget實(shí)現(xiàn)下載網(wǎng)絡(luò)文件功能示例

    這篇文章主要介紹了Python使用wget實(shí)現(xiàn)下載網(wǎng)絡(luò)文件功能,簡單介紹了wget安裝以及Python使用wget下載tar格式網(wǎng)絡(luò)文件并進(jìn)行解壓處理相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • Python+streamlit實(shí)現(xiàn)輕松創(chuàng)建人事系統(tǒng)

    Python+streamlit實(shí)現(xiàn)輕松創(chuàng)建人事系統(tǒng)

    streamlit 是 基于 Python 的一個(gè)非常強(qiáng)大的 web 構(gòu)建系統(tǒng),通過該類庫,我們可以實(shí)現(xiàn)不需要編寫一行前端代碼而構(gòu)建一個(gè)完整的 Web 應(yīng)用。下面我們就來編寫一個(gè)簡單的人事系統(tǒng)吧
    2023-02-02

最新評(píng)論

昌都县| 湘潭市| 体育| 万源市| 留坝县| 邢台市| 宿迁市| 林芝县| 凉城县| 宜城市| 陇川县| 和平区| 宜黄县| 高青县| 大悟县| 昆山市| 延边| 周口市| 炉霍县| 金湖县| 龙游县| 拜泉县| 建平县| 安吉县| 西藏| 黄冈市| 剑河县| 英山县| 杂多县| 乌拉特中旗| 汪清县| 新源县| 剑阁县| 绍兴县| 贵州省| 浏阳市| 抚顺市| 开阳县| 呼图壁县| 天祝| 清水河县|