python-memcached模組原生支援集群操作,其原理是在記憶體維護乙個主機列表,且集群中主機的權重值和主機在列表中重複出現的次數成正比。
主機 權重
1.1.1.1
11.1
.1.2
21.1
.1.31
那麼在記憶體中主機列表為:
host_list =
["1.1.1.1"
,"1.1.1.2"
,"1.1.1.2"
,"1.1.1.3"
,]
如果使用者根據如果要在記憶體中建立乙個鍵值對(如:k1 = 「v1」),那麼要執行一下步驟:
根據演算法將 k1 轉換成乙個數字:
將數字和主機列表長度求餘數,得到乙個值 n( 0 <= n < 列表長度 )
在主機列表中根據 第2步得到的值為索引獲取主機,例如:host_list[n]
連線 將第3步中獲取的主機,將 k1 = 「v1」 放置在該伺服器的記憶體中
import memcache
import memcache
#登入, debug為true時,會顯示錯誤提示
mc = memcache.client(
['10.211.55.4:12000'
], debug=
true
)# add新增一條鍵值對,若已存在,則丟擲異常
mc.add(
'k1'
,'v1'
)# replace修改某條鍵值對,若不存在,則丟擲異常
mc.replace(
'kkkk'
,'999'
)# set設定乙個鍵值對,如果key不存在,則建立,如果key存在,則修改
# set_multi設定多個鍵值對,如果key不存在,則建立,如果key存在,則修改
mc.set
('key0'
,'wupeiqi'
)mc.set_multi(
)# delete 在memcached中刪除指定的乙個鍵值對
# delete_multi 在memcached中刪除指定的多個鍵值對
mc.delete(
'key0'
)mc.delete_multi(
['key1'
,'key2'])
# get 獲取乙個鍵值對
# get_multi 獲取多乙個鍵值對
val = mc.get(
'key0'
)item_dict = mc.get_multi(
["key1"
,"key2"
,"key3"])
# prepend 修改指定key的值,在該值前面插入內容
'k1'
,'after'
)# k1 = "v1after"
mc.prepend(
'k1'
,'before'
)# k1 = "beforev1after"
# incr 自增,將memcached中的某乙個值增加 n ( n預設為1 )
# decr 自減,將memcached中的某乙個值減少 n ( n預設為1 )
mc.set
('k1'
,'777'
)mc.incr(
'k1'
)# k1 = 778
mc.incr(
'k1',10
)# k1 = 788
mc.decr(
'k1'
)# k1 = 787
mc.decr(
'k1',10
)# k1 = 777
# 在併發情況下,兩個使用者分別請求一條資料,假設資料為商品數量500,此時顯示給兩位使用者的資料都為500,
# 此時,兩個使用者同時購買商品,將資料修改為499,如此一來,資料便不正確,所以使用get和set操作以上過程,
# 就會出現這種結果。 此時應該使用gets和cas。
# 此時登入資料庫應該加乙個引數cache_cas=true
mc = memcache.client(
['10.211.55.4:12000'
], debug=
true
, cache_cas=
true
)v = mc.gets(
'product_count'
)mc.cas(
'product_count'
,"499"
)# 本質上每次執行gets時,會從memcache中獲取乙個自增的數字,通過cas去修改gets的值時,
# 會攜帶之前獲取的自增值和memcache中的自增值進行比較,如果相等,則可以提交,
# 如果不想等,那表示在gets和cas執行之間,又有其他人執行了gets(獲取了緩衝的指定值), 如此一來有可能出現非正常資料,則不允許修改。
PHP 對 memcache操作類
class mymemcache add 加入乙個新key,可是假設 key已經在服務端存在。此操作會失敗。param string key key名稱 param string value 值 能夠是陣列,物件,單值 param int timelift 生存時間 add生存時間默覺得0表示資料用...
Redis和Memcache區別,優缺點對比
redis和memecache的不同在於 2 1 儲存方式 memecache 把資料全部存在記憶體之中,斷電後會掛掉,資料不能超過記憶體大小 redis有部份存在硬碟上,這樣能保證資料的永續性,支援資料的持久化 筆者注 有快照和aof日誌兩種持久化方式,在實際應用的時候,要特別注意配置檔案快照引數...
Redis和Memcache區別,優缺點對比
文章 redis和memcache區別,優缺點對比 redis優點 1 讀寫效能優異 2 支援資料持久化,支援aof和rdb兩種持久化方式 3 支援主從複製,主機會自動將資料同步到從機,可以進行讀寫分離。4 資料結構豐富 除了支援string型別的value外還支援string hash set s...