python第十一天-----补:缓存操作
memcached,首先下载python-memcached模块,在cmd中执行pip install python-memcached即可
memcached比较简单,默认情况仅支持简单的kv存储,并且缓存写于内存当中,具体不做介绍了
服务器开启服务后,简单操作下
#!/usr/bin/env python
import memcache mc = memcache.Client(['172.16.5.7:11211'], debug=True)
mc.add('k1', 'v1') #添加一条新kv
mc.add('k1', 'v2') #key存在则报错
ret = mc.get('k1')
print(ret) mc.replace('k1', '') #替换原有的key的value,如果key不存在则报错
ret = mc.get('k1')
print(ret) mc.set('test', 'test') #设置一个kv对
mc.set_multi({'test': 'test', 'xxx': 'ooo'}) #设置多个kv对 # mc.delete('test') #删除一个kv对
# mc.delete_multi(['test', 'xxx']) #删除多个kv对 val = mc.get('test') #获取一个kv对
dic_val = mc.get_multi(['test', 'xxx']) #获取多个kv对 mc.append('k1', 'after') #修改指定key的值,在该值后面追加内容
mc.prepend('k1', 'before') #修改指定key的值,在该值前面插入内容
ret = mc.get('k1')
print(ret)
防止脏数据时使用cas,gets
#!/usr/bin/env python
import memcache
mc = memcache.Client(['172.16.5.7:11211'], debug=True, cache_cas=True)
v = mc.gets('product_count')
mc.cas('product_count', "")
本质上每次执行gets时,会从memcache中获取一个自增的数字,通过cas去修改gets的值时,会携带之前获取的自增值和memcache中的自增值进行比较,如果相等,则可以提交,如果不想等,那表示在gets和cas执行之间,又有其他人执行了gets(获取了缓冲的指定值), 如此一来有可能出现非正常数据,则不允许修改
redis,首先下载python-redis模块,在cmd中执行pip install python-redis即可
redis支持string、list、set、zset、hash,支持缓存持久化
http://www.cnblogs.com/wupeiqi/articles/5132791.html
#!/usr/bin/env python
import redis # r = redis.Redis(host='172.16.5.7', port=6379)
# r.set('foo', 'Bar')
# print(r.get('foo').decode()) pool = redis.ConnectionPool(host='172.16.5.7', port=6379)
#建立一个连接池,可以省去每次创建,释放连接时的开销
r = redis.Redis(connection_pool=pool)
# r.set(name, value, ex=None, px=None, nx=False, xx=False))
# ex,过期时间(秒)
# px,过期时间(毫秒)
# nx,如果设置为True,则只有name不存在时,当前set操作才执行
#xx,如果设置为True,则只有name存在时,当前set操作才执行
r.set('foo', 'Bar')
print(r.get('foo').decode()) r.mset(k1='v1', k2='v2') #一次设置多个kv,也可以写成r.mset({'k1': 'v1', 'k2': 'v2'})
print(r.mget('k1', 'k2')) #一次获取多个kv,也可以写成r.mget(['k1', 'k2']) r.getset('k1', 'new') #获取原值并替换成新的 r.getrange('k1', 1, 3) #获取子序列(根据字节获取,非字符)
r.setrange('k1', 1, 'new') #修改字符串内容,从指定字符串索引开始向后替换(新值太长时,则向后添加) r.append('k1', 'value') #在redis name对应的值后面追加内容
set,hash,zset都差不多,就是参赛前面加s,z,h
python第十一天-----补:缓存操作的更多相关文章
- python第十一天-----补:线程池
低版本: #!/usr/bin/env python import threading import time import queue class TreadPool: ""&q ...
- python3.4学习笔记(二十一) python实现指定字符串补全空格、前面填充0的方法
python3.4学习笔记(二十一) python实现指定字符串补全空格.前面填充0的方法 Python zfill()方法返回指定长度的字符串,原字符串右对齐,前面填充0.zfill()方法语法:s ...
- Python第十一天 异常处理 glob模块和shlex模块 打开外部程序和subprocess模块 subprocess类 Pipe管道 operator模块 sorted函数 os模块 hashlib模块 platform模块 csv模块
Python第十一天 异常处理 glob模块和shlex模块 打开外部程序和subprocess模块 subprocess类 Pipe管道 operator模块 sorted函 ...
- Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理
基于python+mysql浅谈redis缓存设计与数据库关联数据处理 by:授客 QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3 ...
- 孤荷凌寒自学python第十一天初识Python的字典类
孤荷凌寒自学python第十一天初识Python的字典类 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) Python的字典其实是一张二维对照表 下面举例说明: 键名Key 姓名 性别 身高 ...
- C# 常用类库(字符串处理,汉字首字母拼音,注入攻击,缓存操作,Cookies操作,AES加密等)
十年河东,十年河西,莫欺少年穷 学无止境,精益求精 记录下字符串类库,方便今后查阅 主要包含了字符串解决,去除HTML,SQL注入攻击检测,IP地址处理,Cookies操作,根据身份证获取性别.姓名. ...
- Python进阶(十一)----包,logging模块
Python进阶(十一)----包,logging模块 一丶包的使用 什么是包: 包是通过使用 .模块名的方式组织python模块名称空间的方式. 通俗来说,含有一个__init__.py文件的文 ...
- (Python )格式化输出、文件操作、json
本节学习Python的格式化输出,文件操作以及json的简单用法 1.格式化输出 将非字符串类型转换成字符串,可以使用函数:str() 或者repr() ,(这两个函数的区别目前我还没搞懂,求解答) ...
- python - os.path,路径相关操作
python处理系统路径的相关操作: # -*- coding: utf-8 -*- import os # 属性 print '__file__: %s' % __file__ # 绝对路径(包含文 ...
随机推荐
- 如何判断Linux服务器是否被入侵?
被入侵服务器的症状 当服务器被没有经验攻击者或者自动攻击程序入侵了的话,他们往往会消耗 100% 的资源.他们可能消耗 CPU 资源来进行数字货币的采矿或者发送垃圾邮件,也可能消耗带宽来发动 DoS ...
- 修改redhat默认显示语言为中文
[delmore@localhost Desktop]$ su //切换到最高权限 Password: ...
- linux下bwa和samtools的安装与使用
bwa的安装流程安装本软体总共需要完成以下两个软体的安装工作:1) BWA2) Samtools 1.BWA的安装a.下载BWA (download from BWA Source Forge ) h ...
- java基础(2)-面向对象(1)
面向对象 面向对象思想 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程:强调的是功能行为 面向对象:将功能封装进对象,强调具备了功能的对象 面向对象是基于面向过程的 面向对象举例 ...
- 玲珑杯 第4次 String cut(暴力字符串)
题意:给你长度为n(<=100000)的字符串,问你任意删除一个字符后得到循环节最多的数量是多少 题解:最简单的想法就是枚举删除的字符,再kmp求循环节,但是时间复杂度为O(n*n)会超时 因此 ...
- session共享个人小结
一.需求问题: 如果你的网站是存放在一个机器上,那么是不存在这个问题的,因为会话数据就在这台机器,但是如果你使用了负载均衡把请求分发到不同的机器呢? 这个时候会话id在客户端是没有问题的, 但是如果用 ...
- 10.0.4_CentOS_120g
对应 VMware Workstation 版本为:“10.0.4 build-2249910”
- openstack havana块存储Cinder磁盘加密方法研究
http://blog.csdn.net/cloudresearch/article/details/19092219 在openstack havana的release note中有如下介绍“Att ...
- c++中的函数对象
头文件wuyong.h: #pragma once #include<iostream> using namespace std; template<typename T> s ...
- 阿里云 linux 找回mysql root密码
不小心手贱修改了密码,而且使用phpMyAdmin这种自动生成密码,又没记录密码,真实醉了 搜了半天,问题多多,想过回滚磁盘到昨天,在阿里云已经买了付费找密码 最后终于自己解决了,其实很简单 cd ...