Memcache
1、介绍
MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。 MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的key-value存储,数据可以来自数据库调用、API调用,或者页面渲染的结果。
本质上,它是一个简洁的key-value存储系统。
一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。
MemCache的工作流程如下:先检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中(memcached客户端不负责,需要程序明确实现);每次更新数据库的同时更新memcached中的数据,保证一致性;当分配给memcached内存空间用完之后,会使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据。[2]
2、Memcached安装和基本使用
1、Memcached安装
wget http://memcached.org/latest tar -zxvf memcached-1.x.x.tar.gz cd memcached-1.x.x ./configure && make && sudo make install PS:依赖libevent yum install libevent-devel apt-get install libevent-dev
2、启动Memcached
memcached -d -m 10 -u root -l 192.168.49.130 -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..
4、检查服务:
1、查看启动的memcache服务:
netstat -lp | grep memcached
2、查看memcache的进程号(根据进程号,可以结束memcache服务:“kill -9 进程号”)
ps -ef | grep memcached
3、Python操作Memcached
安装API
python操作Memcached使用Python-memcached模块
下载安装:https://pypi.python.org/pypi/python-memcached
操作
import memcache mc=memcache.Client(['192.168.49.130:12000'],debug=True) #连接 #debug = True 表示运行出现错误时,显示错误信息,上线后移除该参数 mc.set('foo','bar') #通过键值对将数据放入缓存 # 设置失效时间 # mc.set('foo','bar',10) #10秒后失效 ret=mc.get('foo') #通过键取值 print(ret)
可能出现的错误:
MemCached: MemCache: inet:192.168.49.130:12000: connect: timed out. Marking dead.
如果memcached服务启动正常,那就是Linux防火墙的原因,需要在iptables里开放12000端口的访问权限,
#查看状态: iptables -L -n #下面添加对特定端口开放的方法: #使用iptables开放如下端口 /sbin/iptables -I INPUT -p tcp --dport 8000 -j ACCEPT #保存 /etc/rc.d/init.d/iptables save #重启服务 service iptables restart #查看需要打开的端口是否生效? service iptables status