金沙澳门官网7817网址Memcached,

本篇导航,并通过memcached协议与守护进程通信,它通过在内存中缓存数据和对象来减少读取数据库的次数,它通过在内存中缓存数据和对象来减少读取数据库的次数,Memcached,它通过在内存中缓存数据和对象来减少读取数据库的次数,Memcached基于一个存储键/值对的

  • Memcached介绍与安装
  • Memcached基本选择

python之Memcached 安装及操作,pythonmemcached

一、Memcached

Memcached
是1个高品质的遍布式内部存款和储蓄器对象缓存系统,用于动态Web应用以缓慢解决数据库负载。它经过在内部存款和储蓄器中缓存数据和目的来压缩读取数据库的次数,从而巩固动态、数据库驱动网址的快慢。Memcached基于二个存款和储蓄键/值对的hashmap。其守护进程(daemon
)是用C写的,可是客户端能够用任何语言来编排,并因而memcached协议与护理进度通信。

2、memcached的装置基本使用

1、memcached安装:

wget http://memcached.org/latest
tar -zxvf memcached-1.x.x.tar.gz
cd memcached-1.x.x
./configure && make && make test && sudo make install

PS:依赖libevent
       yum install libevent-devel
       apt-get install libevent-dev

2、启动Memcached

memcached -d -m 10    -u root -l 10.211.55.4 -p 12000 -c 256 -P /tmp/memcached.pid

参数说明:
    -d 是启动一个守护进程
    -m 是分配给Memcache使用的内存数量,单位是MB
    -u 是运行Memcache的用户
    -l 是监听的服务器IP地址
    -p 是设置Memcache监听的端口,最好是1024以上的端口
    -c 选项是最大运行的并发连接数,默认是1024,按照你服务器的负载量来设定
    -P 是设置保存Memcache的pid文件

3、Memcached命令

存储命令: set/add/replace/append/prepend/cas
获取命令: get/gets
其他命令: delete/stats..

Python操作Memcached

三、安装API

1 2 python操作Memcached使用Python-memcached模块 下载安装:https://pypi.python.org/pypi/python-memcached

一、第一次操作

1 2 3 4 5 6 import memcache   mc = memcache.Client(['10.211.55.4:12000'], debug=True) mc.set("foo""bar") ret = mc.get('foo') print ret

Ps:debug = True 表示运转出现错误时,现实错误音信,上线后移除该参数。

2、天生协理集群

python-memcached模块原生协助集群操作,其原理是在内部存款和储蓄器维护3个主机列表,且集群中主机的权重值和主机在列表中重复出现的次数成正比

1 2 3 4 5 6 7      主机    权重     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", ]

假若用户依据假使要在内部存款和储蓄器中成立三个键值对(如:k1 =
“v1″),那么要施行一下手续:

  • 依赖算法将 k一 调换来多个数字
  • 将数字和主机列表长度求余数,获得2个值 N( 0 <= N < 列表长度
  • 在主机列表中依据 第三步获得的值为索引获取主机,举个例子:host_list[N]
  • 连接 将第一步中获得的主机,将 k1 = “v一” 放置在该服务器的内部存款和储蓄器中

代码达成如下:

1 2 3 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')

3、add
增多一条键值对,假如已经存在的 key,重复实行add操作卓殊

1 2 3 4 5 6 7 #!/usr/bin/env python # -*- coding:utf-8 -*- import memcache   mc = memcache.Client(['10.211.55.4:12000'], debug=True) mc.add('k1''v1') # mc.add('k1', 'v2') # 报错,对已经存在的key重复添加,失败!!!

4、replace
replace 修改有个别key的值,如若key不设有,则充足

1 2 3 4 5 6 7 #!/usr/bin/env python # -*- coding:utf-8 -*- import memcache   mc = memcache.Client(['10.211.55.4:12000'], debug=True) # 如果memcache中存在kkkk,则替换成功,否则一场 mc.replace('kkkk','999')

5、set 和 set_multi

set          
 设置二个键值对,借使key不存在,则创制,假使key存在,则修改
set_multi   设置多少个键值对,假设key不存在,则成立,假使key存在,则修改

1 2 3 4 5 6 7 8 9 #!/usr/bin/env python # -*- coding:utf-8 -*- import memcache   mc = memcache.Client(['10.211.55.4:12000'], debug=True)   mc.set('key0''wupeiqi')   mc.set_multi({'key1''val1''key2''val2'})

6、delete 和 delete_multi

delete             在Memcached中删去钦命的一个键值对
delete_multi    在Memcached中剔除内定的三个键值对

1 2 3 4 5 6 7 8 #!/usr/bin/env python # -*- coding:utf-8 -*- import memcache   mc = memcache.Client(['10.211.55.4:12000'], debug=True)   mc.delete('key0') mc.delete_multi(['key1''key2'])

7、get 和 get_multi

get            获取二个键值对
get_multi   获取多1个键值对

1 2 3 4 5 6 7 8 #!/usr/bin/env python # -*- coding:utf-8 -*- import memcache   mc = memcache.Client(['10.211.55.4:12000'], debug=True)   val = mc.get('key0') item_dict = mc.get_multi(["key1""key2""key3"])

8、append 和 prepend

append    修改钦命key的值,在该值 前边 追加内容
prepend   修改钦定key的值,在该值 前面 插入内容

1 2 3 4 5 6 7 8 9 10 11 12 #!/usr/bin/env python # -*- coding:utf-8 -*- import memcache   mc = memcache.Client(['10.211.55.4:12000'], debug=True) # k1 = "v1"   mc.append('k1''after') # k1 = "v1after"   mc.prepend('k1''before') # k1 = "beforev1after"

9、decr 和 incr  

incr  自增,将Memcached中的某三个值扩大 N ( N默以为壹 )
decr 自减,将Memcached中的某二个值裁减 N ( N默感到一 )

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #!/usr/bin/env python # -*- coding:utf-8 -*- import memcache   mc = memcache.Client(['10.211.55.4:12000'], debug=True) mc.set('k1''777')   mc.incr('k1') # k1 = 778   mc.incr('k1'10) # k1 = 788   mc.decr('k1') # k1 = 787   mc.decr('k1'10) # k1 = 777

10、gets 和 cas

如超市商品剩余个数,若是改值保存在memcache中,product_count = 900
A用户刷新页面从memcache中读取到product_count = 900
B用户刷新页面从memcache中读取到product_count = 900

倘诺A、B用平衡购买商品

A用户修改商品剩余个数 product_count=899
B用户修改商品剩余个数 product_count=899

如此壹来缓存内的数码便不在正确,四个用户购买商品后,商品剩余如故 89九
只要使用python的set和get来操作以上进程,那么程序就能够如上述所示境况!

设若想要幸免此情况的发出,只要采用 gets 和 cas 即可,如:

1 2 3 4 5 6 7 8 9 #!/usr/bin/env python # -*- coding:utf-8 -*- import memcache mc = memcache.Client(['10.211.55.4:12000'], debug=True, cache_cas=True)   = mc.gets('product_count') # ... # 如果有人在gets之后和cas之前修改了product_count,那么,下面的设置将会执行失败,剖出异常,从而避免非正常数据的产生 mc.cas('product_count'"899")

Ps:本质上每一趟推行gets时,会从memcache中赢得多个自增的数字,通过cas去修改gets的值时,会带走事先获得的自增值和memcache中的自增值进行相比较,假若相等,则能够交给,借使不想等,那表示在gets和cas施行之间,又有别的人实施了gets(获取了缓冲的钦赐值),
如此1来有异常的大希望出现畸形数据,则不允许修改

安装及操作,pythonmemcached
1、Memcached Memcached
是一个高品质的分布式内部存款和储蓄器对象缓存系统,用于动态Web应用以缓慢解决数据库负载。…

 

壹、Memcached介绍与安装

Memcached
是一个高品质的布满式内部存款和储蓄器对象缓存系统,用于动态Web应用以缓慢消除数据库负载。它通过在内部存款和储蓄器中缓存数据和对象来压缩读取数据库的次数,从而提升动态、数据库驱动网址的速度。Memcached基于多个存款和储蓄键/值对的hashmap。其守护进度(daemon
)是用C写的,但是客户端能够用别的语言来编排,并经过memcached协议与医生和医护人员进程通讯。

Memcached安装:

wget http://memcached.org/latest
tar -zxvf memcached-1.x.x.tar.gz
cd memcached-1.x.x
./configure && make && make test && sudo make install

PS:依赖libevent
       yum install libevent-devel
       apt-get install libevent-dev

启动Memcached

memcached -d -m 10    -u root -l 10.211.55.4 -p 12000 -c 256 -P /tmp/memcached.pid

参数说明:
    -d 是启动一个守护进程
    -m 是分配给Memcache使用的内存数量,单位是MB
    -u 是运行Memcache的用户
    -l 是监听的服务器IP地址
    -p 是设置Memcache监听的端口,最好是1024以上的端口
    -c 选项是最大运行的并发连接数,默认是1024,按照你服务器的负载量来设定
    -P 是设置保存Memcache的pid文件

Memcached命令

存储命令: set/add/replace/append/prepend/cas
获取命令: get/gets
其他命令: delete/stats..

Python操作Memcached

安装API

python操作Memcached使用Python-memcached模块
下载安装:https://pypi.python.org/pypi/python-memcached

 

二、Memcached基本选拔

一、第一次操作

import memcache

mc = memcache.Client(['10.211.55.4:12000'], debug=True)
mc.set("foo", "bar")
ret = mc.get('foo')
print ret

Ps:debug = True 表示运维出现谬误时,现实错误音讯,上线后移除该参数。

二、天生扶助集群

python-memcached模块原生帮忙集群操作,其原理是在内部存款和储蓄器维护2个主机列表,且集群中主机的权重值和主机在列表中另行出现的次数成正比

     主机    权重
    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", ]

假定用户遵照假如要在内部存款和储蓄器中开创贰个键值对(如:k1 =
“v一”),那么要施行一出手续:

  • 依靠算法将 k一 调换到一个数字
  • 将数字和主机列表长度求余数,获得三个值 N( 0 <= N < 列表长度
  • 在主机列表中根据 第二步获得的值为索引获取主机,举例:host_list[N]
  • 连日来 将第3步中获取的主机,将 k1 = “v壹” 放置在该服务器的内部存款和储蓄器中

代码落成如下:

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')

3、add
增多一条键值对,假诺已经存在的 key,重复实践add操作尤其

import memcache

mc = memcache.Client(['10.211.55.4:12000'], debug=True)
mc.add('k1', 'v1')
# mc.add('k1', 'v2') # 报错,对已经存在的key重复添加,失败!!!

4、replace
replace 修改有个别key的值,假使key不设有,则不行

import memcache

mc = memcache.Client(['10.211.55.4:12000'], debug=True)
# 如果memcache中存在kkkk,则替换成功,否则一场
mc.replace('kkkk','999')

5、set 和 set_multi

set          
 设置四个键值对,如果key不设有,则成立,假设key存在,则修改
set_multi   设置多个键值对,假使key不设有,则创制,借使key存在,则修改

import memcache

mc = memcache.Client(['10.211.55.4:12000'], debug=True)

mc.set('key0', 'wupeiqi')

mc.set_multi({'key1': 'val1', 'key2': 'val2'})

6、delete 和 delete_multi

delete             在Memcached中删除内定的贰个键值对
delete_multi    在Memcached中除去钦赐的两个键值对

import memcache

mc = memcache.Client(['10.211.55.4:12000'], debug=True)

mc.delete('key0')
mc.delete_multi(['key1', 'key2'])

7、get 和 get_multi

get            获取一个键值对
get_multi   获取多三个键值对

import memcache

mc = memcache.Client(['10.211.55.4:12000'], debug=True)

val = mc.get('key0')
item_dict = mc.get_multi(["key1", "key2", "key3"])

8、append 和 prepend

append    修改钦点key的值,在该值 前边 追加内容
prepend   修改钦命key的值,在该值 前边 插入内容

import memcache

mc = memcache.Client(['10.211.55.4:12000'], debug=True)
# k1 = "v1"

mc.append('k1', 'after')
# k1 = "v1after"

mc.prepend('k1', 'before')
# k1 = "beforev1after"

9、decr 和 incr  

incr  自增,将Memcached中的某三个值扩大 N ( N默认为壹 )
decr 自减,将Memcached中的某三个值减弱 N ( N默以为一 )

import memcache

mc = memcache.Client(['10.211.55.4:12000'], debug=True)
mc.set('k1', '777')

mc.incr('k1')
# k1 = 778

mc.incr('k1', 10)
# k1 = 788

mc.decr('k1')
# k1 = 787

mc.decr('k1', 10)
# k1 = 777

10、gets 和 cas

如超级市场商品剩余个数,假若改值保存在memcache中,product_count = 900
A用户刷新页面从memcache中读取到product_count = 900
B用户刷新页面从memcache中读取到product_count = 900

假若A、B用平衡购买商品

A用户修改商品剩余个数 product_count=899
B用户修改商品剩余个数 product_count=899

如此1来缓存内的数据便不在准确,五个用户购买商品后,商品剩余依然 89九
要是采用python的set和get来操作以上进度,那么程序就能够如上述所示景况!

要是想要制止此意况的发生,只要利用 gets 和 cas 就能够,如:

import memcache
mc = memcache.Client(['10.211.55.4:12000'], debug=True, cache_cas=True)

v = mc.gets('product_count')
# ...
# 如果有人在gets之后和cas之前修改了product_count,那么,下面的设置将会执行失败,剖出异常,从而避免非正常数据的产生
mc.cas('product_count', "899")

Ps:本质上每一趟施行gets时,会从memcache中获得四个自增的数字,通过cas去修改gets的值时,会带走事先得到的自增值和memcache中的自增值进行比较,纵然相等,则可以付出,假若不想等,那表示在gets和cas试行之间,又有其余人推行了gets(获取了缓冲的内定值),
如此1来有非常大希望出现不规则数据,则不允许修改。

Memcached 真的老一套了吧?

本篇导航: Memcached介绍与安装
Memcached基本使用 一、Memcached介绍与安装 Memcached
是贰个高质量的分布式内存对象缓存系统,用于动…

Memcached

金沙澳门官网7817网址,Memcached
是1个高品质的布满式内存对象缓存系统,用于动态Web应用以缓解数据库负载。它通过在内部存储器中缓存数据和目的来压缩读取数据库的次数,从而加强动态、数据库驱动网址的速度。Memcached基于一个存款和储蓄键/值对的hashmap。其护理进度(daemon
)是用C写的,可是客户端能够用任何语言来编排,并因而memcached协议与护理进度通讯。

Memcached安装和主导使用

Memcached安装:

1 yum -y install gcc gcc-c++
2 PS:依赖libevent,需要提前安装
3 yum install libevent-devel
4 #apt-get install libevent-dev
5 用wget 去http://memcached.org下载最新源码
6 tar -zxvf memcached-x.x.x.tar.gz
7 cd memcached-x.x.x
8 ./configure && make && make test && sudo make install

启动Memcached:

 1 memcached -d -m 10 -u root -l 0.0.0.0 -p 12000 -c 256 -P /tmp/memcached.pid
 2  
 3 参数说明:
 4     -d 是启动一个守护进程
 5     -m 是分配给Memcache使用的内存数量,单位是MB
 6     -u 是运行Memcache的用户
 7     -l 是监听的服务器IP地址
 8     -p 是设置Memcache监听的端口,最好是1024以上的端口
 9     -c 选项是最大运行的并发连接数,默认是1024,按照你服务器的负载量来设定
10     -P 是设置保存Memcache的pid文件

Memcached命令:

1 存储命令: set/add/replace/append/prepend/cas
2 获取命令: get/gets
3 其他命令: delete/stats..