python 操作memcached

2022-05-14 13:45:35 浏览数 (1)

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)

0 人点赞