python 使用memcached

來源:互聯網
上載者:User

標籤:

轉載自 http://oursimplehouse.blog.sohu.com/63588732.html

安裝 memcached:
1、下載memcached-1.2.2.tar.gz
2、tar xvzf memcached-1.2.2.tar.gz
3、./configure;make;make install

安裝python API組件:
1、下載python-memcached-1.39.tar.gz
2、tar xvzf python-memcached-1.39.tar.gz
3、python setup.py install

啟動memcached
memcached -d -m 64 -l 10.1.41.113 -p 11211
啟動的這個memcached為一個後台守護進程模式(-d), 然後緩衝的空間為64M(-m), 監聽(-l)伺服器10.1.41.113的11212號連接埠(-p)
root下要加-u 指定user參數
memcached -u bj1822 -d -m 64 -l 10.1.41.113 -p 11211

memcached -h
memcached 1.2.2
-p <num>      TCP port number to listen on (default: 11211)
-U <num>      UDP port number to listen on (default: 0, off)
-s <file>     unix socket path to listen on (disables network support)
-l <ip_addr>  interface to listen on, default is INDRR_ANY
-d            run as a daemon
-r            maximize core file limit
-u <username> assume identity of <username> (only when run as root)
-m <num>      max memory to use for items in megabytes, default is 64 MB
-M            return error on memory exhausted (rather than removing items)
-c <num>      max simultaneous connections, default is 1024
-k            lock down all paged memory
-v            verbose (print errors/warnings while in event loop)
-vv           very verbose (also print client commands/reponses)
-h            print this help and exit
-i            print memcached and libevent license
-b            run a managed instanced (mnemonic: buckets)
-P <file>     save PID in <file>, only used with -d option
-f <factor>   chunk size growth factor, default 1.25
-n <bytes>    minimum space allocated for key+value+flags, default 48

編寫python程式:
import memcache, time
mc = memcache.Client([‘10.1.41.113:11211‘], debug=0)
串連到10.1.41.113的11211連接埠,也就是memcachd啟動的連接埠。

mc.set("some_key", "Some value")
設定key和value,第三個參數預設為0,也就是資料永不逾時。
如果這樣設定:
mc.set("some_key", "Some value",1)
表示一秒後逾時
過兩秒列印value的話
time.sleep ( 2)
value = mc.get("some_key")
print value
結果就是None了。

刪除
mc.set("another_key", 3)                                                                          mc.delete("another_key")                                                                                                          
自增和自減
mc.set("key", "1")                                                                                mc.incr("key")                                                                                     mc.decr("key")          

關於LRU
LRU是緩衝超過儲存上限時刪掉隊尾也就是最長時間沒人訪問的元素,參數是-M。但設定了-M和到期時效會存在將未失效的元素刪去的風險。所以網上有人改了下代碼,增加對到期時效的判斷:

返回逾時時間的代碼:
if (exptime > REALTIME_MAXDELTA) 
     return (rel_time_t) (exptime - stats.started);  
else { 
     return (rel_time_t) (exptime + current_time); 
}
memcached的失效時間格式有兩種,當大於60*60*24*30也就是30天的秒數時就是到期距1970年1月1日零時的秒數,否則是有效秒數。

刪除cache的代碼:
for (search = tails[id]; tries>0 && search; tries--, search=search->prev) { 
 if (search->refcount==0) { 
  item_unlink(search); 
   break; 
  } 
}
增加條件:
search->exptime && search->exptime <= current_time 
這樣就可以保證刪除的都是到期了的元素了。 

python 使用memcached

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.