import memcachemc = 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  == > v1mc.append("k1","after") #k1   == >v1aftermc.prepend("k1","before") #k1 ==>beforev1after

decr和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)  #结果为1

mc.incr("key",2)#自增2mc.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使用操作相关推荐

  1. Python模块MySQLdb操作mysql出现2019错误:Can't initialize character set utf-8

    我使用python的MySQLdb模块实现了一个mysql client, 在测试时,出现了如下错误 Python模块MySQLdb操作mysql出现2019错误:Can't initialize c ...

  2. Python 炫技操作:合并字典的七种方法

    来源 | Python编程时光(ID: Cool-Python) Python 语言里有许多(而且是越来越多)的高级特性,是 Python 发烧友们非常喜欢的.在这些人的眼里,能够写出那些一般开发者看 ...

  3. Python OpenCV像素操作

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:opencv学堂 Python OpenCV像素操作 环 ...

  4. python列表字典操作_Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结...

    创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_star ...

  5. python 实现卷积操作

    python实现卷积操作 调用tf.nn.conv2d()实现卷积 自己实现卷积函数 我们知道,tensorflow里面自带卷积函数,tf.nn.conv2d()就可以实现相关功能,本文主要是自己实现 ...

  6. php memcache 基础操作

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

  7. python列表按照指定顺序排序-Python常见排序操作示例【字典、列表、指定元素等】...

    本文实例讲述了Python常见排序操作.分享给大家供大家参考,具体如下: 字典排序 按value排序 d1 = {"name":"python","b ...

  8. python界面设置-PYTHON图形化操作界面的编程七__创建菜单

    PYTHON图形化操作界面的编程七__创建菜单 十八.创建菜单 1.水平菜单的创建 创建菜单需要多条语句,所以这里通过实例来说明水平菜单的创建方法: 下面的语句可以在窗口中添加水平菜单,其中前四行语句 ...

  9. python与excel做数据可视化-Python的Excel操作及数据可视化

    Excel表操作 python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库. 安装xlrd pip install xlrd 简单的表格读取 ...

  10. python切片语法-Python字符串切片操作知识详解

    python 中关于字符串切片的一个问题 aa[0:6] 表示取 第0,1,2,3,4,5 位的数据 所以是6个 123456 aa[:-1] 表示取开始到倒数第二位的数据 所以也是123456 就像 ...

最新文章

  1. Python使用sklearn构建ElasticNet回归模型并指定样本权重:即构建带样本权重(sample_weight)的回归模型
  2. 记一次前端问题解决历程(Cannot read Property ‘call‘ of undefined)
  3. 意念打字、梦境重现如何成真,张钹、李路明等知名专家共话脑机接口最新进展 | 首届脑科学开放日...
  4. 模型大小 与参数量计算
  5. java修改JFrame默认字体
  6. centos 升级mysql_CentOS 7下升级MySQL5.7.23的一个坑
  7. 阿里菜鸟知识储备之二——git工具学习
  8. 和功率的计算公式_电机电流的计算公式是什么,具体怎么计算?
  9. 【Linux环境部署】最新版 elasticsearch + kibana(7.15.0)安装、配置、启动(多个问题处理 + kibana仪表盘使用)
  10. url传递html字符串,将Selenium HTML字符串传递给Scrapy以将url添加到Scrapy的url列表中...
  11. XAML Workflow Schema
  12. python asyncio和celery对比_如何将Celery与asyncio结合? - python
  13. [高等数学]这你不背?
  14. 修改Linux SSH连接端口和禁用IP,安装DDoS deflate
  15. 题解 P1137 【旅行计划】
  16. 解决 django 中 mysql gone away 的问题
  17. http://mozilla.debian.net/
  18. Python函数练习题
  19. GPIO模拟MDC/MDIO协议
  20. iOS终于能微信双开了!原理竟然是这样…

热门文章

  1. 再谈java乱码:GBK和UTF-8互转尾部乱码问题分析
  2. ArcGIS符号异常问题
  3. 清除window 系统中的垃圾文件-转
  4. 一文探讨 RPC 框架中的服务线程隔离
  5. 瞬间几千次的重复提交,我用 Spring Boot + Redis 扛住了!
  6. Java线程详解(6)-线程的交互
  7. spring security CSRF 问题 Invalid CSRF Token 'null' was found on ......
  8. Android --- 选项卡背景样式,左侧边有颜色
  9. element ui 表格中的字太长,想要把多余的字变成...解决方法,一个属性即可
  10. 如何双击运行可执行的jar包-包懂