1、设定缓存放在那里:CACHE_BACKEND 也可以使用memcached:CACHE_BACKEND = 'memcached://127.0.0.1:11211/' 多个memcached:CACHE_BACKEND = 'memcached://172.19.26.240:11211;172.19.26.242:11211/' /// pip install python-memcached 2、python 操作memcached:
!/usr/bin/env python3
coding:utf8
import memcache
链接
mc = memcache.Client(['139.129.5.191:12000'], debug=True)
插入
mc.set("name", "python")
读取
ret = mc.get('name') print (ret)
输出结果
python
debug=True表示运行出现错误时,可以显示错误信息,正式环境可以不加
3、设置权重
!/usr/bin/env python3
coding:utf8
import memcache mc = memcache.Client([('1.1.1.1:12000', 1), ('1.1.1.2:12000', 2),('1.1.1.3:12000',3)]) mc.set('k1','value1') ret = mc.get('k1') print (ret) 4、已经存在的键重复添加会出错:
!/usr/bin/env python
-- coding:utf-8 --
import memcache mc = memcache.Client(['0.0.0.0:12000']) mc.add('k1', 'v1') mc.add('k1', 'v2') # 报错,对已经存在的key重复添加,失败!!! 例如: ret1 = mc.add('name','tom') print(refalse) ret2 = mc.add('name','jack') print(retrue) 结果: False #当已经存在key 那么返回false True #如果不存在key 那么返回treue 5、替换操作:replace,如果键不存在,出错
!/usr/bin/env python
-- coding:utf-8 --
import memcache mc = memcache.Client(['0.0.0.0:12000']) mc.set('name','tom') re = mc.get('name') print(re) rereplace = mc.replace('name','jack') re = mc.get('name') print(rereplace,re) 结果: tom #第一次赋值 True jack #如果存在key那么修改成功为yaoyao 返回True rereplace = mc.replace('name1','hahaha') re = mc.get('name1') print(rereplace,re) 结果: False None #如果不存在key,修改失败,返回空值 6、set:键值存在,就修改,不存在,则创建 import memcache mc = memcache.Client(['0.0.0.0:12000']) mc.set('name','tom') re = mc.get('name') print('set用法',re) #设置一个键值对 dic = {'name':'to,','age':'19','job':'IT'} mc.set_multi(dic) #设置多个键值对
或者mc.set_multi({'name':'tom','age':'19','job':'IT'})
mcname = mc.get('name') mcage = mc.get('age') mcjob = mc.get('job') print('set_multi用法:',mcname,mcage,mcjob) 7、delete: import memcache mc = memcache.Client(['0.0.0.0:12000']) mc.set('name','tom') re = mc.get('name') print('存在',re) mc.delete('name') re = mc.get('name') print('删除',re) #删除一个键值对 8、get
!/usr/bin/env python
-- coding:utf-8 --
import memcache mc = memcache.Client(['0.0.0.0:12000']) mc.set('name','tom') re = mc.get('name') print('get',re) #获取一个键值对 dic = {'name':'to,','age':'19','job':'IT'} mc.set_multi(dic) regetmu=mc.get_multi(['name','age','job']) print('get_multi',re) #获取多个键值对的值 9、append,prepend import memcache mc = memcache.Client(['0.0.0.0:12000']) mc.set('num','第一|') re = mc.get('num') print(re) mc.append('num','追加第二个') #在第一后面追加 re = mc.get('num') print(re) mc.prepend('num','我是零个') #在第一前面追加 re = mc.get('num') print(re) 结果: 第一| 第一|追加第二个 我是零个第一|追加第二个 10、decr,incr自增自减
!/usr/bin/env python
-- coding:utf-8 --
import memcache mc = memcache.Client(['0.0.0.0:12000']) mc.set('num','1') re = mc.get('num') print('我是没加过的值',re) mc.incr('num','9') re = mc.get('num') print('我是加上新增后的值',re) mc.decr('num','5') re = mc.get('num') print('我是减去的值',re)
结果:
我是没加过的值 1 我是加上新增后的值 10 是减去的值 5 11、锁机制:gets cas
!/usr/bin/env python
-- coding:utf-8 --
import memcache mc = memcache.Client(['0.0.0.0:12000'],cache_cas=True) mc.set('count','10') reget = mc.get('count') print('件数',reget) regets = mc.gets('count') print(regets)
如果有人在gets之后和cas之前修改了product_count,那么,
下面的设置将会执行失败,剖出异常,从而避免非正常数据的产生 recas = mc.cas('count','11') print(recas) regets = mc.gets('count') print('修改',regets)