Memcached是一个分布式内存对象缓存系统,将数据缓存在内存中以减少对数据库的访问,从而提高动态网页的访问速度。他的基本结构是key/value(键值对)。让我们看看如何在Python中使用它。
首先,让我们安装服务器端。Beans直接安装在CentOS7机器上。
[root@sydnagios ~]# yum install memcachedLoaded plugins: fastestmirror, langpacks
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
base | 3.6 kB 00:00
epel/x86_64/metalink | 2.0 kB 00:00
epel | 4.3 kB 00:00
extras | 3.4 kB 00:00
updates | 3.4 kB 00:00
(1/5): epel/x86_64/group_gz | 170 kB 00:00
(2/5): epel/x86_64/updateinfo | 671 kB 00:00
然后服务器运行。我在这个里面指定的端口是12000,如果有防火墙的话别忘了打开相应的端口。
[root@sydnagios ~]# memcached -d -m 10 -u root -l 10.2.1.107 -p 12000 -c 256 -P /tmp/memcached.pid参数说明: -d是启动一个守护进程 -m是分配给Memcache使用的内存数量,单位是MB -u是运行Memcache的用户 -l是监听的服务器IP地址 -p是设置Memcache监听的端口,最好是1024以上的端口 -c选项是最大运行的并发连接数,默认是1024,按照你服务器的负载量来设定 -P是设置保存Memcache的pid文件
打开防火墙端口
firewall-cmd --add-port=12000/tcp --permanent接下来,安装Python的客户端模块,并从这里下载https://pypi.python.org/pypi/python-memcached。
解压到sys.path对应的目录,就可以直接使用了。
看看第一个例子。可以通过设置和获取数据来设置数据。调试用于显示错误的生产环境。不要在室内使用。
# -*- coding:utf-8 -*-
# Author Yuan Li
import memcache
mc = memcache.Client(['10.2.1.107:12000'], debug=True)
mc.set("foo", "bar")
mc.add("name","John")
print( mc.get('foo'))
print(mc.get('name'))
-----------
bar
John
memcached的第二个特点是默认支持集群,原理是在内存中创建一个主机列表;每个主机都有一个权重,权重的数量与列表中出现的主机数量成正比。该算法可以决定将键值对放在哪个服务器的内存中。
示例2
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')
除了get和set之外,他还有以下常见的功能
add
添加一个键-值对。如果该键已经存在,重复添加 *** 作是不正常的。
replace
replace修改键值。如果该键不存在,它将是一个异常。
set和set_multi
设置一个键值对。如果该键不存在,请创建它。如果键确实存在,请修改它。
set_multi设置多个键值对。如果该键不存在,请创建它。如果键确实存在,请修改它。
delete和delete_multi
在Memcached中删除一个指定的键值对
delete_multi在Memcached中删除多个指定的键值对。
追加和前置
Append修改指定键的值,在它之后追加内容
prepend修改指定键的值,并在它之前插入内容。
decr和incr
Incr是自增的,在Memcached中增加某个值N(N默认为1)
decr是自减的,在Memcached中减少某个值N(N默认为1)
获取和转换
这种组合可以避免产生脏数据。如果其他用户在返回gets数据和cas数据的过程中执行了get,则不允许修改。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)