Memcache常用命令

存储命令: set/add/replace/append/prepend/cas

获取命令: get/gets

其他命令: delete/stats

1)add方法

添加一条键值对,如果已经存在的key,重复执行add操作会报异常。

2)replace方法

replace修改某个key的值,如果key不存在,则异常。

3)set和set_multi方法

set :设置一个键值对,如果key不存在,则创建,如果key存在,则修改;

set_multi:设置多个键值对,如果key不存在,则创建,如果key存在,则修改。


4)set和add方法的区别

set = add + replace

add方法用于向memcache服务器添加一个要缓存的数据;如果memcache服务器中已经存在要存储的key,此时add方法调用失败。

set方法用于设置一个指定key的缓存内容,set方法是add方法和replace方法的集合体。

例:

#!/usr/bin/env python
import memcache
mc = memcache.Client(["192.168.2.230:11211"],debug=True)mc.add("y","a")
print(mc.get("y"))mc.replace("y","b")
print(mc.get("y"))mc.set("y","c")
print(mc.get("y"))mc.set_multi({"i":1,"j":2,"k":3})
print(mc.get_multi(["i","j","k"]))

运行结果:

a

b

c

{'i': 1, 'k': 3, 'j': 2}

5)delete和delete_multi方法

delete:在Memcached中删除指定的一个键值对;

delete_multi:在Memcached中删除指定的多个键值对。

6)get和get_multi方法

get : 获取一个键值对;

get_multi:获取多个键值对

例:

#!/usr/bin/env python
import memcache
mc = memcache.Client(["192.168.2.230:11211"],debug=True)
mc.set_multi({"i":1,"j":2,"k":3,"g":4})mc.delete("i")
mc.delete_multi(["j","k"])print mc.get_multi(["i","j","k","g"])

运行结果:

{'g': 4}

7)append和prepend方法

append:修改指定key的值,在该值后面追加内容;

prepend:修改指定key的值,在该值前面插入内容。

例:

#!/usr/bin/env python
import memcache
mc = memcache.Client(["192.168.2.230:11211"],debug=True)
mc.set_multi({"i":1,"j":2,"k":3,"g":4})mc.append("i",5)
mc.prepend("j",5)print mc.get_multi(["i","j","k","g"])

运行结果:

{'i': 15, 'k': 3, 'j': 52, 'g': 4}

8)incr和decr方法

  incr:自增,将Memcached中的某一个值增加N(N默认为1)

decr:自减,将Memcached中的某一个值减少N(N默认为1)

例:

#!/usr/bin/env python
import memcache
mc = memcache.Client(["192.168.2.230:11211"],debug=True)
mc.set("No",100)mc.incr("No")
print(mc.get("No"))mc.incr("No",100)
print(mc.get("No"))mc.decr("No")
print(mc.get("No"))mc.decr("No",50)
print(mc.get("No"))

运行结果:

101

201

200

150

9)gets和cas方法

避免多个用户从memcache中取完数字,数字只减1,而不是减多个。

如果在gets之后和cas之前修改了No,那么下面的设置将会执行失败,抛出异常,从而避免非正常数据的产出;本质上每次执行gets时,会从memcache中获取一个自增的数字,通过cas去修改gets的值时,会携带之前获取的自增值和memcache中的自增值进行比较,如   果相等,则可以提交,如果不相等,那表示在gets和cas执行之间,又有其他人执行了gets(获取了缓冲的指定值),如此一来有可能出现非正常数据,则不允许修改。

例:

#!/usr/bin/env python
import memcache
mc = memcache.Client(["192.168.2.230:11211"],debug=True)
mc.set("No",100)v = mc.gets("No")
print(v)v1 = mc.cas("No",v)
print(v1)

运行结果:

100

True

转载于:https://blog.51cto.com/huangzp/2045559

python操作memcahed相关推荐

  1. python操作word文档(python-docx)

    python操作word文档(python-docx) 1. 效果图 1.1 python-docx文档标题段落(等级.加粗.斜体.居中)效果图 1.2 python-docx字体(加粗.斜体.居中. ...

  2. Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  3. Python 操作 MongoDB 数据库!

    作者 |黄伟呢 来源 |数据分析与统计学之美 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 先来看看MySQL与MongoDB 概念区别 ...

  4. python操作yaml的方法详解

    这篇文章主要为大家介绍了python操作yaml的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助 一.参考链接 https://pyyaml.org/wiki/PyYAM ...

  5. python连接excel存放数据_有了这篇python操作Excel学习笔记,以后储存数据 办公很轻松!...

    最近在做一些数据处理和计算的工作,因为数据是以.csv格式保存的,因此刚开始直接用Excel来处理.但是做着做着发现重复的劳动其实并没有多大的意义,于是就想着写个小工具帮着处理.以前正好在一本书上看到 ...

  6. job for nginx.service failed_用Python操作Kubernetes的Job

    关于Kubernetes的Python SDK,几乎只有官方项目的examples.关于Job的基本增删改查操作,可以参考job_crud.py.但是,这只是基本用法,缺乏一些实用细节. 本文给出Py ...

  7. python怎么玩pdf_最全总结!聊聊 python 操作PDF的几种方法

    作者:陈熹 来源:早起Python 一.前言 大家好,有关Python操作PDF的案例之前已经写过一个PDF批量合并,这个案例初衷只是给大家提供一个便利的脚本,并没有太多讲解原理,其中涉及的就是PDF ...

  8. python操作neo4j

    python操作neo4j 先安装neo4j的库: pip install neo4j 测试代码: from neo4j import GraphDatabasedriver = GraphDatab ...

  9. python操作MariaDB

    先安装库: python3 -m pip install PyMySQL 代码如下: import pymysql conn = pymysql.connect(host='127.0.0.1', u ...

最新文章

  1. 国外论坛BCH关注度暴涨
  2. python3视频教程-python3入门视频教程
  3. ThreadPoolExecutor的一点理解 专题
  4. NYOJ--21--bfs--三个水杯
  5. 使用AheadLib生成DLL劫持代码
  6. C++约瑟夫问题求解
  7. HDFS重复上传文件将会覆盖原文件
  8. 如何降低SQL语句复杂度
  9. [javascript] 完全开源,开心分享 HTML5 Canvas 在线图片处理《imageMagic》(single page app)开发详解[1]...
  10. matlab遥感代码,遥感融合定量评价matlab程序代码
  11. wireshark显示过滤器和捕获过滤器
  12. 苹果手机怎么识别文字
  13. MagicBook2018 解决指纹失效
  14. from functools import reduce——从典型实例做抓手看reduce函数使用
  15. python 简单操作dbpedia
  16. 关于谷歌邮箱注册收不到验证码——”此电话号码无法用于验证“的问题
  17. caffeine本地缓存的使用和详解
  18. python解一元二次方程ax^2+bx_python 练习题:定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程ax^2+bx+c=0的两个解...
  19. spring篇(五)官封弼马温
  20. Improving Knowledge-aware Recommendation with Multi-levelInteractive Contrastive Learning

热门文章

  1. big sur删除snapshot_法国Labarthe-Sur-Lèze公立中学 | LCR Architectes
  2. idea页面简单介绍
  3. 结束oracle import,Oracle 结束 imp/exp 和 expdp/impdp 进程的正确方法
  4. mvcc原理_MVCC原理探究及MySQL源码实现分析
  5. 异常错误:在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式
  6. Java内存模型解析
  7. substring用法
  8. openstack项目【day23】:KVM介绍
  9. 【ADO.NET基础知识】SqlConnection、command、DataSet 、DataTable、dataAdapter
  10. Struts中Action三种接收参数的方式?