python對memcached的簡單操作

2021-09-10 01:26:11 字數 2494 閱讀 1604

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...