Memcached 分布式缓存系统部署与调试
Memcache 分布式缓存系统部署与调试工作机制:通过在内存中开辟一块区域来维持一个大的hash表来加快页面访问速度,和数据库是独立的;目前主要用来缓存数据库的数据;存放在内存的数据通过LRU算法进行淘汰出内存;同时可以通过删除和设置失效时间来淘汰存放在内存的数据。
一 memcache 安装
1 memcached 服务器安装
1.1 memcached 官方网站 http://memcached.org/
目前最新稳定版本 memcached-1.4.10.tar.gz
1.2 memcached 依赖libevent库,在安装memcached之前检查下系统是否已安装libevent库,如果没有则需要先安装 libevent
libevent 官方网站 http://libevent.org/
目前最新稳定版本 libevent-2.0.16-stable
libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制
1.3 安装 libevent 与 memcached
[*]# tar zxvf libevent-2.0.16-stable.tar.gz
[*]# cd libevent-2.0.16-stable
[*]# ./configure --prefix=/usr/local/libevent
[*]# make && make install
[*]
[*]# tar zxvf memcached-1.4.10.tar.gz
[*]# cd memcached-1.4.10
[*]# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/
[*]# make && make install
1.4 简单测试
[*]# /usr/local/memcached/bin/memcached -u root -d -m 200 -l 127.0.0.1 -p 11211 -P /var/run/memcached.pid
[*]# ps aux | grep memcache | grep -v 'grep'
[*]root 89790.00.2647321072 ? Ssl12:03 0:00 /usr/local/memcached/bin/memcached -u root -d -m 200 -l 127.0.0.1 -p 11211 -P /var/run/memcached.pid
[*]# lsof -i :11211
[*]COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
[*]memcached 8999 root 26uIPv412244 TCP one.t.com:11211 (LISTEN)
[*]memcached 8999 root 27uIPv412245 UDP one.t.com:11211
2 memcache 客户端安装
2.1 php memcache 客户端
http://pecl.php.net/package/memcache
目前最新稳定版本 memcache-2.2.6.tgz
[*]# tar zxvf memcache-2.2.6.tgz
[*]# cd memcache-2.2.6
[*]# /usr/local/php/bin/phpize
[*]# ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config
[*]# make && make install
[*]Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
[*]# vim /etc/php.ini
[*]然后修改php.ini
[*]extension_dir = "./"
[*]修改为
[*]extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"
[*]并添加一行
[*]extension=memcache.so
[*]# /etc/init.d/php-fpm restart
#memcache.php 测试文件
[*]
[*]输出test,表示搭建成功 !
#php调用memcache
http://blog.运维网.com/attachment/201201/213534200.png
2.2 .net memcache 客户端
http://blog.csdn.net/xiaoyong322/article/details/6544027
http://code.google.com/p/memcached/wiki/Clients
二 memcache 安装shell脚本与安装包
1 memcached 安装脚本
2 memcached 服务脚本
3 memcached 安装包
三 memcached命令参数说明
[*]/usr/local/memcached/bin/memcached-d -u root -m 6144 -l 10.10.10.1 -p 11211 -c 100000 -P /var/run/memcached.pid
[*]-p 监听的端口
[*]-l 连接的IP地址, 默认所有ip地址
[*]-d start 启动memcached服务
[*]-u 以的身份运行 (仅在以root运行的时候有效)
[*]-m 最大内存使用,单位MB;默认64MB
[*]-p 监听 TCP port number;默认 11211
[*]-c 最大同时连接数,默认是1024
[*]-P memcache PID文件, 需要使用 -d 参数
[*]-f 块大小增长因子,默认是1.25
[*]-n 最小分配空间,key+value+flags默认是48
[*]-h 显示帮助
四 memcached 服务器调试
telnet到memcache服务器,如:telnet 10.0.1.252 11211
stats 查看基本信息
stats items可以看到出现 很多的items行
stats cachedump 1 0(3是items后面的数字,0表示显示所有的)
get key(key 为 item后面的字符串即键)
[*]#memcached server 1
[*]$ telnet 10.10.10.1 11211
[*]Trying 10.10.10.1...
[*]Connected to 10.10.10.1.
[*]Escape character is '^]'.
[*]stats
[*]STAT pid 1750
[*]STAT uptime 106479
[*]STAT time 1325943604
[*]STAT version 1.4.10
[*]STAT libevent 2.0.16-stable
[*]STAT pointer_size 64
[*]STAT rusage_user 42.595524
[*]STAT rusage_system 140.332666
[*]STAT curr_connections 1531
[*]STAT total_connections 1057087
[*]STAT connection_structures 1874
[*]STAT reserved_fds 20
[*]STAT cmd_get 33790491
[*]STAT cmd_set 1557865
[*]STAT cmd_flush 0
[*]STAT cmd_touch 0
[*]STAT get_hits 30863261
[*]STAT get_misses 2927230
[*]STAT delete_misses 157
[*]STAT delete_hits 186
[*]STAT incr_misses 0
[*]STAT incr_hits 0
[*]STAT decr_misses 0
[*]STAT decr_hits 0
[*]STAT cas_misses 0
[*]STAT cas_hits 0
[*]STAT cas_badval 0
[*]STAT touch_hits 0
[*]STAT touch_misses 0
[*]STAT auth_cmds 0
[*]STAT auth_errors 0
[*]STAT bytes_read 8488077314
[*]STAT bytes_written 173942242454
[*]STAT limit_maxbytes 6442450944
[*]STAT accepting_conns 1
[*]STAT listen_disabled_num 0
[*]STAT threads 4
[*]STAT conn_yields 9
[*]STAT hash_power_level 19
[*]STAT hash_bytes 4194304
[*]STAT hash_is_expanding 0
[*]STAT expired_unfetched 31545
[*]STAT evicted_unfetched 0
[*]STAT bytes 1309377867
[*]STAT curr_items 404976
[*]STAT total_items 1557865
[*]STAT evictions 0
[*]STAT reclaimed 47812
[*]
[*]
[*]#memcached server 2
[*]# telnet 10.0.1.252 11211
[*]Trying 10.0.1.252...
[*]Connected to 10.0.1.252 (10.0.1.252).
[*]Escape character is '^]'.
[*]stats items
[*]STAT items:1:number 1
[*]STAT items:1:age 10975
[*]STAT items:1:evicted 0
[*]STAT items:1:evicted_nonzero 0
[*]STAT items:1:evicted_time 0
[*]STAT items:1:outofmemory 0
[*]STAT items:1:tailrepairs 0
[*]STAT items:1:reclaimed 0
[*]STAT items:1:expired_unfetched 0
[*]STAT items:1:evicted_unfetched 0
[*]END
[*]stats cachedump 1 0
[*]ITEM key
[*]END
[*]get key
[*]VALUE key 0 4
[*]test
[*]END
扩展
Memcache协议中文版
结束
memcached 节省了磁盘读写、数据库连接、Sql解析资源;它是使用内存来管理数据的,所以它可以提供比直接读取数据库更好的性能。在大型系统中,访问同样的数据是很频繁的,memcached可以大大降低数据库压力。
memcached 也经常作为服务器之间数据共享的存储媒介,例如在web集群下session可以保存在memcached中,被多个应用共享。
memcached 是将数据放在内存中,不是持久化存储,一旦服务器重启,数据将会丢失。
页:
[1]