一、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. Echarts横坐标倾斜,顶部显示数字

    最近项目使用到Echarts,所以学习了下 根据API,实现Echarts很简单,在这就不多说了,下面就说说项目中碰到的一些需求 1.由于横坐标很多,导致数据不能展示完整,所以需要设置横坐标样式倾斜展 ...

  2. POJ 3070 矩阵快速幂

    题意:求菲波那切数列的第n项. 分析:矩阵快速幂. 右边的矩阵为a0 ,a1,,, 然后求乘一次,就进一位,求第n项,就是矩阵的n次方后,再乘以b矩阵后的第一行的第一列. #include <c ...

  3. react中虚拟dom的diff算法

    .state 数据 .jsx模板 .生成虚拟dom(虚拟DOM就是一个js对象,用它来描述真实DOM) ['div', {id:'abc'}, ['span', {}, 'hello world']] ...

  4. genil层

    genil 层将底层的业务逻辑封装成一个接口(例如 get_dynamic_result这种),供ui层调用(ui点击 search dynamic result按钮,会调用 get_dynamic_ ...

  5. 整理 45 道 CSS 基础面试题(附答案)

    1.介绍一下标准的CSS的盒子模型?与低版本IE的盒子模型有什么不同的? 标准盒子模型:宽度=内容的宽度(content)+ border + padding + margin低版本IE盒子模型:宽度 ...

  6. 基于 UIImagePickerController 的拓展封装 - iOS

    基于 UIImagePickerController 的拓展,分别支持调用相机.相册的功能,其中相机可以设置默认调用前后摄像头; 简单对此进行了封装和实现,其中还有很多点可以继续挖掘和优化,该版本具体 ...

  7. c# 常用数据库封装

    我不为大家贴代码了,没有意思,有点多,我主要给大家介绍一下,源码会上传CSDN和GIT:我定义了一个ADO.NET操作接口,所有按照接口封装 1.sqlite数据库(需要SQLite.Interop. ...

  8. 范围for语句的整理

    1.如何处理stirng中的每个字符?(来自C++Primer中文版5th中P83) 使用基于范围的for语句,比如下面的例子,输出每个字符 #include<iostream> #inc ...

  9. ABAP术语-Lock Object

    Lock Object 原文:http://www.cnblogs.com/qiangsheng/archive/2008/02/29/1085742.html Object type in the ...

  10. VULTR的VPS在centos的操作系统中出现网站无法访问 80端口被firewall禁止

    导语:叶子在为一位客户配置web服务器环境的时候,出现网站不能访问的情况,但ping正常.客户的服务器是在VULTR上购买的VPS,安装的操作系统为centos 7.3.经过叶子的分析,认为是防火墙阻 ...