對Flask感興趣的,可以看下這個視訊教程:http://study.163.com/course/courseLearn.htm?courseId=1004091002
### 介紹:
哪些情況下适合使用 memcached 呢?存儲驗證碼(圖形驗證碼、短信驗證碼),登入 session 等所有不是至關重要且被通路到的幾率較大的資料。
### 安裝(Windows):
使用 cmd 進入到對應目錄,執行 memcached.exe -d install
### 啟用(管理者權限):
使用 cmd 進入到對應目錄,執行 memcached.exe -d start
### 啟動時的參數:
-d 讓 memcached 在背景運作
-m 指定最多能占用多少記憶體,以 M 為機關,預設 64M,超出後會新資料會替換掉最開始的資料
-p 指定占用的端口,預設 11211
-l 指定哪些 ip 可以連接配接,如(-l 0.0.0.0 代表所有機器都能連接配接)預設隻能通過本機連接配接
### 檢視是否啟用:
打開任務管理器,點選 [服務] 選項,若存在 memcached 服務則說明已經啟用
### 可能出現的問題:
1. 提示沒有權限:打開 cmd 的時候使用管理者的身份
2. 缺少 pthreadGC2.dll 檔案:将 pthreadGC2.dll 檔案拷貝到 windows/System32 目錄下
3. 不要放在含有中文字元的路徑下
### telnet 連接配接 memcached 格式:telnet ip port
### 如何驗證 telnet 已經連接配接上 memcached 了?
set username myyd 0 60 3 # 建立一個資料,名字為 myyd ,0 代表是否需要壓縮,存儲 60 秒,其值隻能包含 3 個字元
abc # 輸入 myyd 對應的值
get username # 擷取 username 對應的名字和值
quit # 退出
### memcached 文法(memcached 以鍵值對的方式存儲資料)
登入: telnet [ip] [port]
## set:建立一個新的資料,格式如下:
> set username 0 120 4 # 其中,username 是 key,MYYD 是 value,0 代表不壓縮,120 代表過期時間(s),4 代表值隻能是 4 個位元組
> MYYD
## get:擷取指定資料,如:
> get username
## delete:删除指定資料,如:
> delete username
## flush_all:清除 memcached 中的所有資料
## incr:給 key 的值執行相加操作,格式如下:
> set age 0 120 2
> 18
> incr age 2 # 隻能對數值類型進行相加
> get age # 會得到 20
## decr:給 key 的值執行相減操作,格式如下:
> decr age 2 # 隻能對數值類型進行相加
> get age # 會得到 16
## stats:檢視 memcached 的相關資訊,最常用的是檢視 get 命中率(get 時是從 memcached 中擷取的機率)。但實際上還可以看其他的資訊,如下:
> stats
> STAT get_miss 2 # get miss 次數
> STAT get_hits 2 # get hits 次數
> STAT curr_items 1 # 目前 memcached 中總共有多少鍵值對
> 等等
### 使用 python 操作 memcached:
1. 連接配接 memcached
import memcache
mc = memcache.Client(['127.0.0.1:11211'],debug=True)
2. 設定鍵值對
mc.set('username','MYYD',time=120) # 不需要設定值的長度,time 為過期時間(機關s),預設為 0,0 代表永不過期
3. 設定多個鍵值對
mc.set_multi({'username':'MYYD','age':'18'},time=120) # 設定多個鍵值對時,傳入一個字典
4. 擷取指定資料
username = mc.get('username')
print(username)
5. 删除指定資料
mc.delete('username')
6. 給 key 的值執行相加操作(可以應用在文章的閱讀量上)
mc.incr('age') # 預設在原來的基礎上加 1
mc.incr('age',delta=5) # 若指定了 delta 則可以自定義增長數
7. 給 key 的值執行相減操作
mc.decr('age') # 預設在原來的基礎上減 1
mc.decr('age',delta=5) # 若指定了 delta 則可以自定義遞減數
8. memcached 分布式存儲
所謂 memcached 分布式存儲,就是啟用多台伺服器去存儲 memcached 資料,實作 memcached 分布式存儲的方式如下:
mc = memcache.Client(['127.0.0.1:11211','192.168.110.110:11211'],debug=True) # 在連接配接時候傳入開啟了 memcached 服務的機器的 IP 位址即可
當你 set 資料的時候,會存入不同的伺服器中,達到分布式存儲的功能。