python---memcache使用操作
生活随笔
收集整理的這篇文章主要介紹了
python---memcache使用操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
import memcachemc = memcache.Client(['127.0.0.1:8081'],debug=True)mc.set("key","val")ret = mc.get("key")print(ret)
mc.incr("key",2)#自增2
mc.decr("key",2)#自減2
set:
mc.set("key","val")add:
#mc.add("key",'val')已存在則不允許添加 #MemCached: while expecting 'STORED', got unexpected response 'NOT_STORED'replace:
mc.replace("key","valr") #不存在則不允許修改上面的add,和replace不常使用,因為set完全可以替換,更加靈活,set()可以創建,可以修改
set_multi使用:
mc.set_multi({'k1':'v1','k2':'v2'})delete和delete_multi
mc.delete("k1") mc.delete_multi("key1","key")get和get_multi
ret = mc.get("k1")#返回結果 ret = mc.get_multi(["k1","k2"])#返回結果集append和prepend,在設置的鍵后面的值上進行修改
mc.set("k1","v1") #k1 == > v1mc.append("k1","after") #k1 == >v1aftermc.prepend("k1","before") #k1 ==>beforev1afterdecr和incr:
decr自減一,incr自加一(在未設置步長時),針對所存值都為int類型的數據
mc.set("key","1") mc.set("key",1) #上面兩種都可以 mc.incr("key") ret = mc.get("key") print(ret) #結果為2mc.decr('key') print(ret) #結果為1mc.incr("key",2)#自增2
mc.decr("key",2)#自減2
gets和cas:防止有臟數據,類似加鎖(實際是在內部維護了一個計數器),使數據保持正確,誰先獲取這個數據,只有當他處理完成后,其他人,才可以再去獲取,不允許同時獲取數據,不然報錯,所以可以通過這個try修改順序
使用:
進程一:
import memcachemc = memcache.Client(['127.0.0.1:8081'],debug=True,cache_cas=True)mc = memcache.Client(['127.0.0.1:8081'],debug=True,cache_cas=True)r = mc.gets('c1') print(r) input(">>>") mc.cas('c1',99) r = mc.get('c1') print(r)進程二:
import memcachemc = memcache.Client(['127.0.0.1:8081'],debug=True,cache_cas=True)r = mc.gets('c1') print(r) input(">>>") mc.cas('c1',99) r = mc.get('c1') print(r)當1執行后堵塞,再執行2(本質上每次執行gets時,會從memcache中獲取一個自增的數字),獲取數據輸出后,兩個都堵塞
執行2,(通過cas去修改gets的值時,會攜帶之前獲取的自增值和memcache中的自增值進行比較,如果相等,則可以提交)
再去執行1,cas數據是其自增值和內存不一致(由于2已經修改過),則報錯
MemCached: while expecting 'STORED', got unexpected response 'EXISTS'memcache和Redis比較:https://www.oschina.net/news/26691/memcached-timeout
轉載于:https://www.cnblogs.com/ssyfj/p/8604996.html
總結
以上是生活随笔為你收集整理的python---memcache使用操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 桐花万里python路-高级篇-并发编程
- 下一篇: IntelliJ IDEA使用说明