1. 程式人生 > >python操作memcache

python操作memcache

python memcache 集群 nosql

Memcached是一個高性能的分布式內存對象緩存系統,用於動態Web應用以減輕數據庫負載。它通過在內存中緩存數據和對象減少讀取數據庫的次數,從而提高動態、數據庫驅動網站的速度。Memcached基於一個存儲鍵/值的hash map。其守護進程(daemon)是用C語言寫的,但是客戶端可以用任何語言來編寫,並通過memcached協議與守護進程通信。


安裝

cd /usr/local/src

wget http://memcached.org/latest

tar -zxvf memcached-1.x.x.tar.gz

cd memcached-1.x.x

./configure && make && make test && make install


啟動

memcached -d -m 10 -u root -l 127.0.0.1 -p 12000 -c 256 -P /export/servers/memcache/logs/memcache.pid

-p 指定端口號(默認11211)

-m 指定最大使用內存大小(默認64MB)

-t 線程數(默認4)

-l 連接的IP地址, 默認是本機

-d 以後臺守護進程的方式啟動

-c 最大同時連接數,默認是1024

-P 制定memecache的pid文件

-h 打印幫助信息

ps -ef檢查memcache是否啟動,檢查端口號

Python操作memcache集群

python-memcachd模塊原生支持集群操作,其原理是在內存維護一個主機列表,且集群中主機的權重值和主機在列表中重復出現的次數成正比。

主機 權重

1.1.1.1 1

1.1.1.2 2

1.1.1.3 1

那麽在內存中主機列表為:host_list=['1.1.1.1','1.1.1.2','1.1.1.2','1.1.1.3',]


例子:

mc = memcache.Client([('1.1.1.1:12000', 1), ('1.1.1.2:12000', 2), ('1.1.1.3:12000', 1)], debug=True)

mc.set('k1', 'v1')


如果用戶要在內存中創建一個鍵值對(如:k1 = “v1”),那麽要執行以下步驟:

根據算法將k1轉換成一個數字;

將數字和主機列表長度求余數,得到一個值N(0 <= N < 列表長度);

在主機列表中根據第2步得到的值為索引獲取主機,例如:host_list[N];

連接將第3步中獲取的主機,將k1 = 'v1'放置在該服務器的內存中。

上面例子我們通過調用memcache模塊來實現對memcached進行存取數據,debug=True表示運行中出現錯誤時,顯示錯誤信息,上線後移除該參數。


python操作memcache