python操作memcahed
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相关推荐
- python操作word文档(python-docx)
python操作word文档(python-docx) 1. 效果图 1.1 python-docx文档标题段落(等级.加粗.斜体.居中)效果图 1.2 python-docx字体(加粗.斜体.居中. ...
- Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...
- Python 操作 MongoDB 数据库!
作者 |黄伟呢 来源 |数据分析与统计学之美 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 先来看看MySQL与MongoDB 概念区别 ...
- python操作yaml的方法详解
这篇文章主要为大家介绍了python操作yaml的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助 一.参考链接 https://pyyaml.org/wiki/PyYAM ...
- python连接excel存放数据_有了这篇python操作Excel学习笔记,以后储存数据 办公很轻松!...
最近在做一些数据处理和计算的工作,因为数据是以.csv格式保存的,因此刚开始直接用Excel来处理.但是做着做着发现重复的劳动其实并没有多大的意义,于是就想着写个小工具帮着处理.以前正好在一本书上看到 ...
- job for nginx.service failed_用Python操作Kubernetes的Job
关于Kubernetes的Python SDK,几乎只有官方项目的examples.关于Job的基本增删改查操作,可以参考job_crud.py.但是,这只是基本用法,缺乏一些实用细节. 本文给出Py ...
- python怎么玩pdf_最全总结!聊聊 python 操作PDF的几种方法
作者:陈熹 来源:早起Python 一.前言 大家好,有关Python操作PDF的案例之前已经写过一个PDF批量合并,这个案例初衷只是给大家提供一个便利的脚本,并没有太多讲解原理,其中涉及的就是PDF ...
- python操作neo4j
python操作neo4j 先安装neo4j的库: pip install neo4j 测试代码: from neo4j import GraphDatabasedriver = GraphDatab ...
- python操作MariaDB
先安装库: python3 -m pip install PyMySQL 代码如下: import pymysql conn = pymysql.connect(host='127.0.0.1', u ...
最新文章
- 国外论坛BCH关注度暴涨
- python3视频教程-python3入门视频教程
- ThreadPoolExecutor的一点理解 专题
- NYOJ--21--bfs--三个水杯
- 使用AheadLib生成DLL劫持代码
- C++约瑟夫问题求解
- HDFS重复上传文件将会覆盖原文件
- 如何降低SQL语句复杂度
- [javascript] 完全开源,开心分享 HTML5 Canvas 在线图片处理《imageMagic》(single page app)开发详解[1]...
- matlab遥感代码,遥感融合定量评价matlab程序代码
- wireshark显示过滤器和捕获过滤器
- 苹果手机怎么识别文字
- MagicBook2018 解决指纹失效
- from functools import reduce——从典型实例做抓手看reduce函数使用
- python 简单操作dbpedia
- 关于谷歌邮箱注册收不到验证码——”此电话号码无法用于验证“的问题
- caffeine本地缓存的使用和详解
- python解一元二次方程ax^2+bx_python 练习题:定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程ax^2+bx+c=0的两个解...
- spring篇(五)官封弼马温
- Improving Knowledge-aware Recommendation with Multi-levelInteractive Contrastive Learning
热门文章
- big sur删除snapshot_法国Labarthe-Sur-Lèze公立中学 | LCR Architectes
- idea页面简单介绍
- 结束oracle import,Oracle 结束 imp/exp 和 expdp/impdp 进程的正确方法
- mvcc原理_MVCC原理探究及MySQL源码实现分析
- 异常错误:在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式
- Java内存模型解析
- substring用法
- openstack项目【day23】:KVM介绍
- 【ADO.NET基础知识】SqlConnection、command、DataSet 、DataTable、dataAdapter
- Struts中Action三种接收参数的方式?