python---memcache使用操作
import memcache
mc = memcache.Client(['127.0.0.1:8081'],debug=True)
mc.set("key","val")
ret = mc.get("key")
print(ret)
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 == > v1
mc.append("k1","after") #k1 == >v1after
mc.prepend("k1","before") #k1 ==>beforev1after
decr和incr:
decr自减一,incr自加一(在未设置步长时),针对所存值都为int类型的数据
mc.set("key","")
mc.set("key",)
#上面两种都可以
mc.incr("key")
ret = mc.get("key")
print(ret) #结果为2
mc.decr('key')
print(ret) #结果为1
mc.incr("key",2)#自增2
mc.decr("key",2)#自减2
gets和cas:防止有脏数据,类似加锁(实际是在内部维护了一个计数器),使数据保持正确,谁先获取这个数据,只有当他处理完成后,其他人,才可以再去获取,不允许同时获取数据,不然报错,所以可以通过这个try修改顺序
使用:
进程一:
import memcache
mc = 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',)
r = mc.get('c1')
print(r)
进程二:
import memcache
mc = memcache.Client(['127.0.0.1:8081'],debug=True,cache_cas=True)
r = mc.gets('c1')
print(r)
input(">>>")
mc.cas('c1',)
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
python---memcache使用操作的更多相关文章
- python memcache 常用操作
add() 添加一条键值对,如果key已存在,重复执行add操作会报异常 mc.add('name2', 'lisi') print(mc.get('name2')) # lisi replace 修 ...
- python高级之操作数据库
python高级之操作数据库 本节内容 pymysql介绍及安装 使用pymysql执行sql 获取新建数据自增ID fetch数据类型设置 1.pymysql介绍及安装 在python2中连接数据库 ...
- Python 文件常见操作
# -*-coding:utf8 -*- ''''' Python常见文件操作示例 os.path 模块中的路径名访问函数 分隔 basename() 去掉目录路径, 返回文件名 dirname() ...
- Python :open文件操作,配合read()使用!
python:open/文件操作 open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) 如何打开文件 handle=open(file_name,a ...
- 第九篇:python高级之操作数据库
python高级之操作数据库 python高级之操作数据库 本节内容 pymysql介绍及安装 使用pymysql执行sql 获取新建数据自增ID fetch数据类型设置 1.pymysql介绍及 ...
- (转载)Python 列表(list)操作
(转载)http://blog.csdn.net/facevoid/article/details/5338048 创建列表sample_list = ['a',1,('a','b')] Python ...
- python之数据库操作(sqlite)
python之数据库操作(sqlite) 不像常见的客户端/服务器结构范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分.所以主要的通信协议是在编程语言内的直接A ...
- python通过openpyxl操作excel
python 对Excel操作常用的主要有xlwt.xlrd.openpyxl ,前者xlwt主要适合于对后缀为xls比较进行写入,而openpyxl主要是针对于Excel 2007 以上版本进行操作 ...
- python操作三大主流数据库(8)python操作mongodb数据库②python使用pymongo操作mongodb的增删改查
python操作mongodb数据库②python使用pymongo操作mongodb的增删改查 文档http://api.mongodb.com/python/current/api/index.h ...
- php memcache 基础操作
<?php/** * Memcache缓存操作 * @author hxm * @version 1.0 * @since 2015.05.04 */class MCache extends O ...
随机推荐
- PHP常用类------生成验证码类Code
直接附上代码吧!很简单的代码,写一遍基本就会了,主要明白用GD库画图的几个步骤: 1.先创建画布,不然画在哪儿?(imagecreatetruecolor)2.根据要画的数据,选定颜色 (imagec ...
- XMLHttpRequest详解
XMLHttpRequest详解: https://xhr.spec.whatwg.org/
- Angular生成二维码
Installation - Angular 5+, Ionic NPM npm install angularx-qrcode --save Yarn yarn add angularx-qrcod ...
- Jest & React & Enzyme
Jest & React & Enzyme auto units testing https://reactjs.org/docs/test-utils.html https://gi ...
- ERP开源框架 + 二次开发平台 介绍
经历了多年软件开发,深受网络大侠们的资源共享才得以有所成绩, 本人主要是做企业ERP软件,一直有个感受,开发具体某个功能不难,但随着需求的增加,管理庞大的代码却成了最大的问题 而为企业管理所做的开发, ...
- BZOJ1798[Ahoi2009]维护序列——线段树
题目描述 老师交给小可可一个维护数列的任务,现在小可可希望你来帮他完成. 有长为N的数列,不妨设为a1,a2,…,aN .有如下三种操作形式: (1)把数列中的一段数全部乘一个值; (2 ...
- 平衡树及笛卡尔树讲解(旋转treap,非旋转treap,splay,替罪羊树及可持久化)
在刷了许多道平衡树的题之后,对平衡树有了较为深入的理解,在这里和大家分享一下,希望对大家学习平衡树能有帮助. 平衡树有好多种,比如treap,splay,红黑树,STL中的set.在这里只介绍几种常用 ...
- MT【18】幂平均不等式的证明
评:证明时对求导要求较高,利用这个观点,对平时熟悉的调和平均,几何平均,算术平均,平方平均有了更深 刻的认识.
- 述 SQL 中的 distinct 和 row_number() over() 的区别及用法
1 前言 在咱们编写 SQL 语句操作数据库中的数据的时候,有可能会遇到一些不太爽的问题,例如对于同一字段拥有相同名称的记录,我们只需要显示一条,但实际上数据库中可能含有多条拥有相同名称的记录,从而在 ...
- 04 Zabbix4.0系统配置触发器trigger
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 04 Zabbix4.0系统配置触发器trigger 请点击查看Zabbix3.0.8版本trig ...