一、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的更多相关文章

  1. Python操作nosql数据库之redis

    一.NoSQL的操作 NoSQL,泛指非关系型的数据库.随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不 ...

  2. python操作mysql数据库的相关操作实例

    python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...

  3. Python操作Access数据库

    我们在这篇文章中公分了五个步骤详细分析了Python操作Access数据库的相关方法,希望可以给又需要的朋友们带来一些帮助. AD: Python编 程语言的出现,带给开发人员非常大的好处.我们可以利 ...

  4. Windows下安装MySQLdb, Python操作MySQL数据库的增删改查

    这里的前提是windows上已经安装了MySQL数据库,且配置完成,能正常建表能操作. 在此基础上仅仅需安装MySQL-python-1.2.4b4.win32-py2.7.exe就ok了.仅仅有1M ...

  5. 使用python操作mysql数据库

    这是我之前使用mysql时用到的一些库及开发的工具,这里记录下,也方便我查阅. python版本: 2.7.13 mysql版本: 5.5.36 几个python库 1.mysql-connector ...

  6. python 内存NoSQL数据库

    python 内存NoSQL数据库 来自于网络,经过修改,秉承Open Source精神,回馈网络! #!/usr/bin/python #-*- coding: UTF-8 -*- # # memd ...

  7. python操作三大主流数据库(10)python操作mongodb数据库④mongodb新闻项目实战

    python操作mongodb数据库④mongodb新闻项目实战 参考文档:http://flask-mongoengine.readthedocs.io/en/latest/ 目录: [root@n ...

  8. python操作三大主流数据库(9)python操作mongodb数据库③mongodb odm模型mongoengine的使用

    python操作mongodb数据库③mongodb odm模型mongoengine的使用 文档:http://mongoengine-odm.readthedocs.io/guide/ 安装pip ...

  9. python操作三大主流数据库(8)python操作mongodb数据库②python使用pymongo操作mongodb的增删改查

    python操作mongodb数据库②python使用pymongo操作mongodb的增删改查 文档http://api.mongodb.com/python/current/api/index.h ...

随机推荐

  1. ArcGIS10.1之crossdomain文件

    大家都知道在10.1之前的版本在开发的时候需要使用跨域部署文件crossdomain.xml文件,在10.1中该文件不需要单独拷贝到IIS根目录或者是java版本的weboutput目录,在serve ...

  2. Android进阶笔记10:ListView篇之ListView显示多种类型的条目(item)

    ListView可以显示多种类型的条目布局,这里写显示两种布局的情况,其他类似. 1. 这是MainActivity,MainActivity的布局就是一个ListView,太简单了这里就不写了,直接 ...

  3. Idea 配置 Database 组件的MySql数据库连接

    1.选择MySql

  4. 调用jquery的resize方法改变div的宽度和高度在IE中不变,在谷歌中可以正常显示

    1.jquery代码: 1.1问题的版本: $(function() { haituheight(); $(window).resize(function(){ haituheight(); }); ...

  5. Spring知识点总结(三)之注解方式实现IOC和DI

        1. 注解概念        所谓注解就是给程序看的提示信息,很多时候都用来作为轻量级配置的方式.        关于注解的知识点,参看java基础课程中java基础加强部分的内容.    2 ...

  6. 轻量ORM-SqlRepoEx (三)Select语句

    一.示例用数据库为Northwind数据库,可在百度网盘下载 https://pan.baidu.com/s/1er0Mm48kUfeAsYkSW6DfnA 密码:r7pm 二.如何初始化SqlRep ...

  7. 轻量ORM-SqlRepoEx (二)初始化SqlRepoEx

    一.SqlRepoEx引用 暂时没放至nuget上,可以直接到https://github.com/AzThinker/SqlRepoEx下载源码,编译引用. (一).静态引用 1.需引用以下dll在 ...

  8. oracle-sql优化-通过分组和缓存减少不必要的读

    环境:aix 7.1,oracle12.1.0.2 cdb 优化前SQL select * from (select row_.*, rownum rownum_ from (select '弱覆盖' ...

  9. 通过swagger下载的文件乱码解决方法,求解

    这里的数据显示 点击Download Templates下载之后是显示一个response流都不是一个xlsx文件 这个是由什么原因造成的,求解?

  10. Vue 2.0 组件库总结

    UI组件 element - 饿了么出品的Vue2的web UI工具套件 Vux - 基于Vue和WeUI的组件库 mint-ui - Vue 2的移动UI元素 iview - 基于 Vuejs 的开 ...