Django 快取框架 memcache

2022-03-07 03:39:41 字數 2717 閱讀 5059

0 0 原來....

翻譯:gashero

目錄主要取自 memcached 的主頁。

memcached是乙個高效能的、分布式記憶體物件快取系統,儘管很通用,但是用來加速web應用、降低資料庫負載時比較多。

danga interactive 開發了memcached用來提高 livejournal.com 的速度,這個站點每天處理2000萬以上的動態頁面請求,獨立使用者有100萬左右。memcached把資料庫的負載降到了幾乎沒什麼事可幹的地步,並為使用者提供很快的頁面響應速度,更好的資源利用率和更快的資料庫訪問操作。

首先啟動乙個memcached監護程序,監護程序不需要配置檔案,只要在命令列裡面加三四個引數就可以了:

# ./memcached -d -m 2048 -l 10.0.0.40 -p 11211
這裡指定使用2gb記憶體,監聽10.0.0.40的11211埠來啟動memcached。因為32位處理器最多只能有4gb的位址空間。如果你確實需要32位的伺服器處理4-64gb的記憶體(使用pae),則每個使用2-3gb記憶體。

warning

pass

資料庫為了在關聯式資料庫管理系統上實現acid,使用了鎖,導致很多讀寫阻塞。而memcached從不會阻塞。

首先使用快取的很多使用者都是用於web。這意味著要分配時間出來做多請求處理給不同的系統,如mod_perl、php等等,這是對全域性快取的一種浪費。如果你使用多執行緒語言和共享記憶體api,如ipc::shareable,你的每個執行緒都擁有獨立的快取。這個也是共享記憶體的侷限性。

memcached伺服器和客戶端實現了全域性快取。實際上,很推薦你在同一臺機器上同時執行web結點和memcached結點。這會節省一點網路開銷。

warning

pass

warning

pass

非常快,它使用 libevent 來處理任意數量的連線。在linux上,盡可能使用epoll 來實現。使用非阻塞的網路io和計算,所以物件在不同的客戶端上可能有不同的狀態。還使用內建的記憶體塊分配和雜湊表演算法,確保虛擬記憶體不會過來搗亂。

你可能感興趣使用者是否會獲取乙個過期的值。

伺服器api只有一種獲取資料的方法,並有3種提交資料的方法:

另外,這3個函式都可以設定過期時間。

import memcachemc=memcache.client(['127.0.0.1:11211'],debug=0)mc.set("some_key","some value")value=mc.get("some_key")mc.set("another_key",3)mc.delete("another_key)mc.set("key","1") #用於自動增量/減量的必須是字串mc.incr("key")mc.decr("key")
標準的使用memcache作為資料庫快取的方法如下:

key=derive_key(obj)obj=mc.get(key)if not obj:    obj=backend_api.get(...)    mc.set(obj)#現在可以操作obj了

__init__(servers,debug=0,pickleprotocol=0,pickler=pickle.pickler,unpickler=pickle.unpickler)

建構函式

delete(key,time=0)

刪除某個鍵。time的單位是秒,確保特定時間內的set/update操作會失敗。返回1成功,0失敗。

incr(key,delta=1)

給自增量變數加上delta,預設為1。

decr(key,delta=1)

給自減量變數減去delta,預設為1。

add(key,val,time=0,min_compress_len=0)

新增乙個鍵值對,內部呼叫_set()方法。

replace(key,val,time=0,min_compress_len=0)

替換值,內部呼叫_set()方法。

set(key,val,time=0,min_compress_len=0)

無條件的設定鍵值對。time設定超時,單位是秒。min_compress_len用於設定zlib壓縮。內部呼叫_set()方法。

設定多個鍵值對。

get(key)

獲取值。出錯則返回none。

get_multi(keys,key_prefix=」)

獲取多個鍵的值,返回字典。keys為健明列表。key_prefix是鍵名字首,可以最終構成key_prefix+key的完整鍵名。與set_multi中一樣。

Django 框架14 快取

快取 1.快取 對於中等流量的 來說,盡可能地減少開銷是必要的。快取資料就是為了儲存那些需要很多計算資源的結果,這樣的話就不必在下次重複消耗計算資源 django自帶了乙個健壯的快取系統來儲存動態頁面,避免對於每次請求都重新計算 django提供了不同級別的快取粒度 可以快取特定檢視的輸出 可以僅僅...

django 重新整理快取 Django 中的快取問題

django 中的快取問題 簡單介紹 在動態 中,使用者所有的請求,伺服器都會去資料庫中進行相應的增,刪,查,改,渲染模板,執行業務邏輯,最後生成使用者看到的頁面.當乙個 的使用者訪問量很大的時候,每一次的的後台操作,都會消耗很多的服務端資源,所以必須使用快取來減輕後端伺服器的壓力.快取是將一些常用...

Django 框架 Django介紹

django 使用 python 語言寫的開源 web 開發框架,並遵循 mvc 設計。勞倫斯出版集團為了開發以新聞內容為主的 而開發出來了這個框架。django 今年來應用越來越廣泛。django 的主要目的是簡便 快速的開發資料庫驅動的 它強調 復用,多個元件可以很方便的以 外掛程式 形式服務於...