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使用操作的更多相关文章

  1. python memcache 常用操作

    add() 添加一条键值对,如果key已存在,重复执行add操作会报异常 mc.add('name2', 'lisi') print(mc.get('name2')) # lisi replace 修 ...

  2. python高级之操作数据库

    python高级之操作数据库 本节内容 pymysql介绍及安装 使用pymysql执行sql 获取新建数据自增ID fetch数据类型设置 1.pymysql介绍及安装 在python2中连接数据库 ...

  3. Python 文件常见操作

    # -*-coding:utf8 -*- ''''' Python常见文件操作示例 os.path 模块中的路径名访问函数 分隔 basename() 去掉目录路径, 返回文件名 dirname()  ...

  4. Python :open文件操作,配合read()使用!

    python:open/文件操作 open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) 如何打开文件 handle=open(file_name,a ...

  5. 第九篇:python高级之操作数据库

    python高级之操作数据库   python高级之操作数据库 本节内容 pymysql介绍及安装 使用pymysql执行sql 获取新建数据自增ID fetch数据类型设置 1.pymysql介绍及 ...

  6. (转载)Python 列表(list)操作

    (转载)http://blog.csdn.net/facevoid/article/details/5338048 创建列表sample_list = ['a',1,('a','b')] Python ...

  7. python之数据库操作(sqlite)

    python之数据库操作(sqlite) 不像常见的客户端/服务器结构范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分.所以主要的通信协议是在编程语言内的直接A ...

  8. python通过openpyxl操作excel

    python 对Excel操作常用的主要有xlwt.xlrd.openpyxl ,前者xlwt主要适合于对后缀为xls比较进行写入,而openpyxl主要是针对于Excel 2007 以上版本进行操作 ...

  9. python操作三大主流数据库(8)python操作mongodb数据库②python使用pymongo操作mongodb的增删改查

    python操作mongodb数据库②python使用pymongo操作mongodb的增删改查 文档http://api.mongodb.com/python/current/api/index.h ...

  10. php memcache 基础操作

    <?php/** * Memcache缓存操作 * @author hxm * @version 1.0 * @since 2015.05.04 */class MCache extends O ...

随机推荐

  1. JavaScript 字符串与数组互转,并保持数据去重、排序功能

    var valueArr = new Array(); if( $("input[name='type']").val() != ""){ valueArr = ...

  2. Under the same directory(folder) copy or rename with the different extension name

    @echo offsetlocal EnableDelayedExpansionfor /f "delims=" %%i in ('dir *.vm /q/s/b') do ( c ...

  3. 数据驱动测试之——CSV+TestNG

    对于利用Webdriver做自动化的童鞋,对于如何将元素或者输入数据如何和编码分离都应该不会太陌生,本着一边学习一边分享的心态,大概总结了一下关于利用CSV.XML以及Excel来存放数据,然后在结合 ...

  4. [转帖]GitHub上整理的一些工具

    GitHub上整理的一些工具   技术站点 Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 inf ...

  5. 微信内置浏览器在使用video标签时(安卓)默认全屏的原因及解决办法

    根据X5论坛得到的答案是:设计如此. 腾讯真是越来越嚣张了,一家独大后用户体验都不注重了(不给程序员留活路). 听说有个申请加入vdeo白名单的,域名验证后就可以解决默认全屏(反正我是没见过申请入口, ...

  6. protocol buffer开发指南(官方)

    欢迎来到protocol buffer的开发者指南文档,一种语言无关.平台无关.扩展性好的用于通信协议.数据存储的结构化数据序列化方法. 本文档是面向计划将protocol buffer使用的到自己的 ...

  7. 微信小程序开发3之保存数据及页面跳转

    第一  保存本地数据 1.异步保存本地数据 wx.setStorage({ key:keyStr, data:dataStr, success: function(e){}, fail: functi ...

  8. c-lodop云打印实现手机打印 JS语句打印

    Lodop和c-lodop目前只能安装到windows操作系统上,但是其他操作系统可通过向C-Lodop安装的电脑发送打印任务,实现手机广域网或局域网打印,打印语句也是简单的JS语句,可以轻松实现云打 ...

  9. 16mysql1

    一.数据库的基本概念 1.1  常用的关系型数据库                        数据库(Database)是按照数据结构来组织.存储和管理数据的仓库. 1.2  sql语言     ...

  10. jenkins--使用命令行自动启动Jenkins的job

    Jenkins作为持续集成强大的开源工具,除了使用界面它还有强大的cli命令. 1 自动启动jenkins 的job: 启动不带参数的job: curl --user USER:PASSWORD JE ...