事件处理
libevent是个程序库,它将Linux的epoll、BSD类操做系统的kqueue等事件处理功能封装成统一的接口。即便对服务器的链接数增长,也能发挥O(1)的性能。memcached使用这个libevent库,所以能在Linux、BSD、Solaris等操做系统上发挥其高性能。关于事件处理这里就再也不详细介绍,能够参考Dan Kegel的The C10K Problem。
存储方式
为了提升性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。因为数据仅存在于内存中,所以重启memcached、重启操做系统会致使所有数据消失。另外,内容容量达到指定值以后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached自己是为缓存而设计的服务器,所以并无过多考虑数据的永久性问题。
通讯分布式
memcached尽管是“分布式”缓存服务器,但服务器端并无分布式功能。各个memcached不会互相通讯以共享信息。那么,怎样进行分布式呢?这彻底取决于客户端的实现!php
事件、存储、通讯解释摘自百度html
如上图所示:java
Agent1把数据分别保存在192.168.7.102:11211 和 192.168.7.103:11211分红两份,而且192.168.7.104:11211保留完整的备份python
Agent2把数据分别保存在192.168.7.103:11211 和 192.168.7.103:11211分红两份,而且192.168.7.104:11211保留完整的备份git
缘由:github
在写的时候同时写两份保存在Memcached里!能够根据须要本身调整,基本上一个Agent便可,可是为了冗余使用两个Agent是推荐的!算法
配置:apache
一、安装Memcached (安装memcached在192.168.7.102 192.168.7.103 192.168.7.104 并启动端口11211)vim
yum -y install memcached #安装软件 /usr/bin/memcached -d -u root -l 192.168.7.102 -m 1024 -p 11211#启动服务 /usr/bin/memcached -d -u root -l 192.168.7.103 -m 1024 -p 11211#启动服务 /usr/bin/memcached -d -u root -l 192.168.7.104 -m 1024 -p 11211#启动服务 #命令解释: ''' 启动Memcache 经常使用参数 -p <num> 设置TCP端口号(默认不设置为: 11211) -U <num> UDP监听端口(默认: 11211, 0 时关闭) -l <ip_addr> 绑定地址(默认:全部都容许,不管内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问) -d 以daemon方式运行 -u <username> 绑定使用指定用于运行进程<username> -m <num> 容许最大内存用量,单位M (默认: 64 MB) -P <file> 将PID写入文件<file>,这样可使得后边进行快速进程终止, 须要与-d 一块儿使用 '''
二、安装Magent (安装Magent在192.168.7.100 192.168.7.101)数组
cd /usr/local/ mkdir ./magent cd ./magent wget -c http://memagent.googlecode.com/files/magent-0.6.tar.gz tar xzvf ./magent-0.6.tar.gz /sbin/ldconfig sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile make cp ./magent /usr/bin/magent #命令详解 ''' -h this message -u uid -g gid -p port, default is 11211. (0 to disable tcp support) -s ip:port, set memcached server ip and port -b ip:port, set backup memcached server ip and port -l ip, local bind ip address, default is 0.0.0.0 -n number, set max connections, default is 4096 -D do not go to background -k use ketama key allocation algorithm -f file, unix socket path to listen on. default is off -i number, max keep alive connections for one memcached server, default is 20 -v verbose '''
三、启动Magent
#/usr/bin/env python #-*- coding:utf-8 -*- import memcache mc = memcache.Client(['192.168.7.100:11211'],debug=True) mc.set('Timluo','1',60) mc.set('Timluo2','2',60) mc.set('Timluo3','3',60) mc.set('Timluo4','4',60) mc.set('Timluo5','5',60) mc.set('Timluo6','6',60)
五、能够经过telnet 192.168.7.102 或 192.168.7.103 或 192.168.7.104 上直接get keyname去获取值看看是否能够正常获取是否已经正常存储了!或者安装管理工具Memadmin查看
''' telnet 192.168.7.102 11211 get Timluo1 VALUE Timluo1 0 1 1 ..... ......... '''
yum -y install httpd
二、安装php的memcache扩展包php-pecl-memcache
yum -y install php-pecl-memcache
三、修改apache配置文件添加php
vim /etc/httpd/conf/httpd.conf line:420 DirectoryIndex index.html index.html.var index.php #新增index.php
四、下载MemAdmin
git clone https://github.com/junstor/memadmin #若是没有安装git请自行安装
五、启动apache服务
/etc/init.d/httpd start
六、登陆WEB MemAdmin
http://192.168.7.101/memadmin #默认密码在config.php中能够本身定义
七、添加管理(图形界面不在解释,请自行添加)