Memcached介紹
事件處理
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不會互相通信以共享信息。那么,怎樣進行分布式呢?這完全取決於客戶端的實現!
事件、存儲、通信解釋摘自百度
Magent+Memcached實現集群
如上圖所示:
Agent1把數據分別保存在192.168.7.102:11211 和 192.168.7.103:11211分成兩份,並且192.168.7.104:11211保留完整的備份
Agent2把數據分別保存在192.168.7.103:11211 和 192.168.7.103:11211分成兩份,並且192.168.7.104:11211保留完整的備份
原因:
在寫的時候同時寫兩份保存在Memcached里!可以根據需要自己調整,基本上一個Agent即可,但是為了冗余使用兩個Agent是推薦的!
配置:
安裝配置
1、安裝Memcached (安裝memcached在192.168.7.102 192.168.7.103 192.168.7.104 並啟動端口11211)
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 一起使用 '''
2、安裝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 '''
3、啟動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)
5、可以通過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 ..... ......... '''
Memadmin
主要功能:
- 服務器參數監控:STATS、SETTINGS、ITEMS、SLABS、SIZES實時刷新
- 服務器性能監控:GET、DELETE、INCR、DECR、CAS等常用操作命中率實時監控
- 支持數據遍歷,方便對存儲內容進行監視
- 支持條件查詢,篩選出滿足條件的KEY或VALUE
- 數組、JSON等序列化字符反序列顯示
- 兼容memcache協議的其他服務,如Tokyo Tyrant (遍歷功能除外)
- 支持服務器連接池,多服務器管理切換方便簡潔
yum -y install httpd
2、安裝php的memcache擴展包php-pecl-memcache
yum -y install php-pecl-memcache
3、修改apache配置文件添加php
vim /etc/httpd/conf/httpd.conf line:420 DirectoryIndex index.html index.html.var index.php #新增index.php
4、下載MemAdmin
git clone https://github.com/junstor/memadmin #如果沒有安裝git請自行安裝
5、啟動apache服務
/etc/init.d/httpd start
6、登錄WEB MemAdmin
http://192.168.7.101/memadmin #默認密碼在config.php中可以自己定義
7、添加管理(圖形界面不在解釋,請自行添加)