python操作nosql数据库之memcache
一、memcache的安装
1.memcache简介
Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值的hashmap。其守护进程(daemon)是用C语言写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。
2.安装memcache
#cd /usr/local/src
#wget http://memcached.org/latest
#tar -zxvf latest
#cd memcached-1.x.x
#./configure && make && make test && make install
注:安装memcache出现configure: error: libevent is required. If it's already installed, specify its path using –with-libevent=/dir/
解决办法:memcached需要libevent支持,所以首先安装libevent
查看系统是否已经安装libevent:
# rpm -qa|grep libevent
如果有,先升级:
#yum -y install libevent
如果没有,则:
yum install libevent-devel
测试libevent是不是已经安装成功:
#ls -al /usr/lib | grep libevent
3.启动memcache
#memcached -d -m 10 -u root -l 127.0.0.1 -p 12000 -c 256 -P /export/servers/memcache/logs/memcache.pid
-p 指定端口号(默认11211)
-m 指定最大使用内存大小(默认64MB)
-t 线程数(默认4)
-l 连接的IP地址, 默认是本机
-d 以后台守护进程的方式启动
-c 最大同时连接数,默认是1024
-P 制定memecache的pid文件
-h 打印帮助信息
检查memcache是否启动:
#ps -ef |grep memcache
二、memcache集群的操作
python-memcachd模块原生支持集群操作,其原理是在内存维护一个主机列表,且集群中主机的权重值和主机在列表中重复出现的次数成正比。
主机 权重
1.1.1.1 1
1.1.1.2 2
1.1.1.3 1
那么在内存中主机列表为:
host_list=['1.1.1.1','1.1.1.2','1.1.1.2','1.1.1.3',]
python操作memcache集群
首先要在安装memcache客户端:pip install python-memcached
mc = memcache.Client([('1.1.1.1:12000', 1), ('1.1.1.2:12000', 2), ('1.1.1.3:12000', 1)], debug=True)
mc.set('k1', 'v1')
如果用户要在内存中创建一个键值对(如:k1 = “v1”),那么要执行以下步骤:
根据算法将k1转换成一个数字;
将数字和主机列表长度求余数,得到一个值N(0 <= N < 列表长度);
在主机列表中根据第2步得到的值为索引获取主机,例如:host_list[N];
连接将第3步中获取的主机,将k1 = 'v1'放置在该服务器的内存中。
上面例子我们通过调用memcache模块来实现对memcached进行存取数据,debug=True表示运行中出现错误时,显示错误信息,上线后移除该参数。
程序例子:
#安装memcache客户端 pip install python-memcached
import memcache mc = memcache.Client([("192.168.203.130:11212",2),("192.168.203.130:11211",1),("192.168.203.130:11213",1)], debug =True)
mc.set("k1","v1")
print (mc.get("k1")) mc1 = memcache.Client(["192.168.203.130:11211"], debug =True)
print (mc1.get("k1"))
三、memcache常用方法
1.add():添加一条键值对,如果已经存在的key,重复执行add操作会报异常。
2.replace():修改某个key的值,如果key不存在,则异常。
3.set():设置一个键值对,如果key不存在,则创建,如果key存在,则修改;
set_multi():设置多个键值对,如果key不存在,则创建,如果key存在,则修改。
set方法和add方法的区别
set = add + replace
memcache::add 方法:add方法用于向memcache服务器添加一个要缓存的数据。注意:如果memcache服务器中已经存在要存储的key,此时add方法调用失败。
memcache::set 方法:set方法用于设置一个指定key的缓存内容,set方法是add方法和replace方法的集合体。
注意:
1)、如果要设置的key不存在时,则set方法与add方法的效果一致;
2)、如果要设置的key已经存在时,则set方法与replace方法效果一样。
3)、 mmecache::replace方法: replace方法用于替换一个指定key的缓存内容,如果key不存在则返回false
4.delete:在Memcached中删除指定的一个键值对;
delete_multi:在Memcached中删除指定的多个键值对。
5.get : 获取一个键值对;
get_multi:获取多个键值对。
6.append:修改指定key的值,在该值后面追加内容;
prepend:修改指定key的值,在该值前面插入内容。
7.incr:自增,将Memcached中的某一个值增加N(N默认为1);
decr:自减,将Memcached中的某一个值减少N(N默认为1)。
python操作nosql数据库之memcache的更多相关文章
- Python操作nosql数据库之redis
一.NoSQL的操作 NoSQL,泛指非关系型的数据库.随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不 ...
- python操作mysql数据库的相关操作实例
python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...
- Python操作Access数据库
我们在这篇文章中公分了五个步骤详细分析了Python操作Access数据库的相关方法,希望可以给又需要的朋友们带来一些帮助. AD: Python编 程语言的出现,带给开发人员非常大的好处.我们可以利 ...
- Windows下安装MySQLdb, Python操作MySQL数据库的增删改查
这里的前提是windows上已经安装了MySQL数据库,且配置完成,能正常建表能操作. 在此基础上仅仅需安装MySQL-python-1.2.4b4.win32-py2.7.exe就ok了.仅仅有1M ...
- 使用python操作mysql数据库
这是我之前使用mysql时用到的一些库及开发的工具,这里记录下,也方便我查阅. python版本: 2.7.13 mysql版本: 5.5.36 几个python库 1.mysql-connector ...
- python 内存NoSQL数据库
python 内存NoSQL数据库 来自于网络,经过修改,秉承Open Source精神,回馈网络! #!/usr/bin/python #-*- coding: UTF-8 -*- # # memd ...
- python操作三大主流数据库(10)python操作mongodb数据库④mongodb新闻项目实战
python操作mongodb数据库④mongodb新闻项目实战 参考文档:http://flask-mongoengine.readthedocs.io/en/latest/ 目录: [root@n ...
- python操作三大主流数据库(9)python操作mongodb数据库③mongodb odm模型mongoengine的使用
python操作mongodb数据库③mongodb odm模型mongoengine的使用 文档:http://mongoengine-odm.readthedocs.io/guide/ 安装pip ...
- python操作三大主流数据库(8)python操作mongodb数据库②python使用pymongo操作mongodb的增删改查
python操作mongodb数据库②python使用pymongo操作mongodb的增删改查 文档http://api.mongodb.com/python/current/api/index.h ...
随机推荐
- ArcGIS10.1之crossdomain文件
大家都知道在10.1之前的版本在开发的时候需要使用跨域部署文件crossdomain.xml文件,在10.1中该文件不需要单独拷贝到IIS根目录或者是java版本的weboutput目录,在serve ...
- Android进阶笔记10:ListView篇之ListView显示多种类型的条目(item)
ListView可以显示多种类型的条目布局,这里写显示两种布局的情况,其他类似. 1. 这是MainActivity,MainActivity的布局就是一个ListView,太简单了这里就不写了,直接 ...
- Idea 配置 Database 组件的MySql数据库连接
1.选择MySql
- 调用jquery的resize方法改变div的宽度和高度在IE中不变,在谷歌中可以正常显示
1.jquery代码: 1.1问题的版本: $(function() { haituheight(); $(window).resize(function(){ haituheight(); }); ...
- Spring知识点总结(三)之注解方式实现IOC和DI
1. 注解概念 所谓注解就是给程序看的提示信息,很多时候都用来作为轻量级配置的方式. 关于注解的知识点,参看java基础课程中java基础加强部分的内容. 2 ...
- 轻量ORM-SqlRepoEx (三)Select语句
一.示例用数据库为Northwind数据库,可在百度网盘下载 https://pan.baidu.com/s/1er0Mm48kUfeAsYkSW6DfnA 密码:r7pm 二.如何初始化SqlRep ...
- 轻量ORM-SqlRepoEx (二)初始化SqlRepoEx
一.SqlRepoEx引用 暂时没放至nuget上,可以直接到https://github.com/AzThinker/SqlRepoEx下载源码,编译引用. (一).静态引用 1.需引用以下dll在 ...
- oracle-sql优化-通过分组和缓存减少不必要的读
环境:aix 7.1,oracle12.1.0.2 cdb 优化前SQL select * from (select row_.*, rownum rownum_ from (select '弱覆盖' ...
- 通过swagger下载的文件乱码解决方法,求解
这里的数据显示 点击Download Templates下载之后是显示一个response流都不是一个xlsx文件 这个是由什么原因造成的,求解?
- Vue 2.0 组件库总结
UI组件 element - 饿了么出品的Vue2的web UI工具套件 Vux - 基于Vue和WeUI的组件库 mint-ui - Vue 2的移动UI元素 iview - 基于 Vuejs 的开 ...