一、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. 【转载】#458 Errors While Converting Between enum and Underlying Type

    You can convert to an enum value from its underlying type by casting the underlying type (e.g. int) ...

  2. POJ 2985 名次树

    题意:1~n个猫,有合并操作,有询问操作,合并两只猫所在的集合,询问第K大的集合. 分析:合并操作用并查集,用size维护,询问操作用Treap.注意优化,不能刚开始就把所有size = 1放到名次树 ...

  3. HDU 1205 鸽巢原理

    #include <bits/stdc++.h> using namespace std; long long abs_(long long a,long long b) { if(a&g ...

  4. 【转】 Android Fragment 真正的完全解析(下)

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37992017 上篇博客中已经介绍了Fragment产生原因,以及一些基本的用法和 ...

  5. 【Linux-CentOS】在无互联网-内网环境的Windows7主机上安装CentOS双系统,从安装到放弃

    2018.12.3 日更新:本文仅作为无互联网环境下安装的参考.更推荐在互联网环境下安装软件和使用系统,毕竟会自动安装依赖包,比较方便. 因个人办公电脑装的盗版Win7总是蓝屏,影响工作,加之看到 W ...

  6. Angularjs 数据过滤

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  7. input上传图片并显示

    html: <div id="click"><img> </div><!--照片预览的div --> <div class=& ...

  8. JavaScript js调用堆栈(一)

    本文主要介绍JavaScript程序内部的执行机制 首先先了解什么是执行上下文 执行上下文就是当前JavaScript代码被解析和执行是所在环境的抽象概念,JavaScript中运行任何的代码都是在执 ...

  9. SpringMvc获取上下文

    import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.spri ...

  10. SpringBoot非官方教程 | 第二十一篇: springboot集成JMS

    转载请标明出处: http://blog.csdn.net/forezp/article/details/71024024 本文出自方志朋的博客 springboot对JMS提供了很好的支持,对其做了 ...