博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Memcached 分布式缓存系统部署与调试
阅读量:6262 次
发布时间:2019-06-22

本文共 4764 字,大约阅读时间需要 15 分钟。

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

1.3 安装 libevent 与 memcached

 
  1. # tar zxvf libevent-2.0.16-stable.tar.gz 
  2. # cd libevent-2.0.16-stable 
  3. # ./configure --prefix=/usr/local/libevent 
  4. # make && make install 
  5.  
  6. # tar zxvf memcached-1.4.10.tar.gz 
  7. # cd memcached-1.4.10 
  8. # ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/ 
  9. # make && make install 

1.4 简单测试

 
  1. # /usr/local/memcached/bin/memcached -u root -d -m 200 -l 127.0.0.1 -p 11211 -P /var/run/memcached.pid 
  2. # ps aux | grep memcache | grep -v 'grep' 
  3. root      8979  0.0  0.2  64732  1072 ?        Ssl  12: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 
  4. # lsof -i :11211 
  5. COMMAND    PID USER   FD   TYPE DEVICE SIZE NODE NAME 
  6. memcached 8999 root   26u  IPv4  12244       TCP one.t.com:11211 (LISTEN) 
  7. memcached 8999 root   27u  IPv4  12245       UDP one.t.com:11211  

2 memcache 客户端安装
2.1 php memcache 客户端
http://pecl.php.net/package/memcache
目前最新稳定版本 memcache-2.2.6.tgz

 
  1. # tar zxvf memcache-2.2.6.tgz 
  2. # cd memcache-2.2.6 
  3. # /usr/local/php/bin/phpize 
  4. # ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config 
  5. # make && make install 
  6. Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/ 
  7. # vim /etc/php.ini 
  8. 然后修改php.ini 
  9. extension_dir = "./" 
  10. 修改为 
  11. extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/" 
  12. 并添加一行 
  13. extension=memcache.so 
  14. # /etc/init.d/php-fpm restart   

#memcache.php 测试文件

 
  1. <? 
  2. $memcache = new Memcache; //创建一个memcache对象 
  3. $memcache->connect('localhost', 11211) or die ("Could not connect"); //连接Memcached服务器 
  4. $memcache->set('key', 'test'); //设置一个变量到内存中,名称是key 值是test 
  5. $get_value = $memcache->get('key'); //从内存中取出key的值 
  6. echo $get_value; 
  7. ?> 
  8. 输出test,表示搭建成功 ! 

#php调用memcache

2.2 .net memcache 客户端
http://blog.csdn.net/xiaoyong322/article/details/6544027
http://code.google.com/p/memcached/wiki/Clients
二 memcache 安装shell脚本与安装包

 

三 memcached命令参数说明

 
  1. /usr/local/memcached/bin/memcached  -d -u root -m 6144 -l 10.10.10.1 -p 11211 -c 100000 -P /var/run/memcached.pid 
  2. -p 监听的端口 
  3. -l 连接的IP地址, 默认所有ip地址 
  4. -d start 启动memcached服务 
  5. -u 以的身份运行 (仅在以root运行的时候有效) 
  6. -m 最大内存使用,单位MB;默认64MB 
  7. -p 监听 TCP port number;默认 11211 
  8. -c 最大同时连接数,默认是1024 
  9. -P memcache PID文件, 需要使用 -d 参数 
  10. -f 块大小增长因子,默认是1.25 
  11. -n 最小分配空间,key+value+flags默认是48 
  12. -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后面的字符串即键)

 
  1. #memcached server 1 
  2. $ telnet 10.10.10.1 11211 
  3. Trying 10.10.10.1... 
  4. Connected to 10.10.10.1. 
  5. Escape character is '^]'. 
  6. stats 
  7. STAT pid 1750 
  8. STAT uptime 106479 
  9. STAT time 1325943604 
  10. STAT version 1.4.10 
  11. STAT libevent 2.0.16-stable 
  12. STAT pointer_size 64 
  13. STAT rusage_user 42.595524 
  14. STAT rusage_system 140.332666 
  15. STAT curr_connections 1531 
  16. STAT total_connections 1057087 
  17. STAT connection_structures 1874 
  18. STAT reserved_fds 20 
  19. STAT cmd_get 33790491 
  20. STAT cmd_set 1557865 
  21. STAT cmd_flush 0 
  22. STAT cmd_touch 0 
  23. STAT get_hits 30863261 
  24. STAT get_misses 2927230 
  25. STAT delete_misses 157 
  26. STAT delete_hits 186 
  27. STAT incr_misses 0 
  28. STAT incr_hits 0 
  29. STAT decr_misses 0 
  30. STAT decr_hits 0 
  31. STAT cas_misses 0 
  32. STAT cas_hits 0 
  33. STAT cas_badval 0 
  34. STAT touch_hits 0 
  35. STAT touch_misses 0 
  36. STAT auth_cmds 0 
  37. STAT auth_errors 0 
  38. STAT bytes_read 8488077314 
  39. STAT bytes_written 173942242454 
  40. STAT limit_maxbytes 6442450944 
  41. STAT accepting_conns 1 
  42. STAT listen_disabled_num 0 
  43. STAT threads 4 
  44. STAT conn_yields 9 
  45. STAT hash_power_level 19 
  46. STAT hash_bytes 4194304 
  47. STAT hash_is_expanding 0 
  48. STAT expired_unfetched 31545 
  49. STAT evicted_unfetched 0 
  50. STAT bytes 1309377867 
  51. STAT curr_items 404976 
  52. STAT total_items 1557865 
  53. STAT evictions 0 
  54. STAT reclaimed 47812 
  55.  
  56.  
  57. #memcached server 2 
  58. # telnet 10.0.1.252 11211  
  59. Trying 10.0.1.252... 
  60. Connected to 10.0.1.252 (10.0.1.252). 
  61. Escape character is '^]'. 
  62. stats items 
  63. STAT items:1:number 1 
  64. STAT items:1:age 10975 
  65. STAT items:1:evicted 0 
  66. STAT items:1:evicted_nonzero 0 
  67. STAT items:1:evicted_time 0 
  68. STAT items:1:outofmemory 0 
  69. STAT items:1:tailrepairs 0 
  70. STAT items:1:reclaimed 0 
  71. STAT items:1:expired_unfetched 0 
  72. STAT items:1:evicted_unfetched 0 
  73. END 
  74. stats cachedump 1 0 
  75. ITEM key [4 b; 1325927086 s] 
  76. END 
  77. get key 
  78. VALUE key 0 4 
  79. test 
  80. END 

扩展

结束
memcached 节省了磁盘读写、数据库连接、Sql解析资源;它是使用内存来管理数据的,所以它可以提供比直接读取数据库更好的性能。在大型系统中,访问同样的数据是很频繁的,memcached可以大大降低数据库压力
memcached 也经常作为服务器之间数据共享的存储媒介,例如在web集群下session可以保存在memcached中,被多个应用共享。
memcached 是将数据放在内存中,不是持久化存储,一旦服务器重启,数据将会丢失
 

本文转自 dongnan 51CTO博客,原文链接:http://blog.51cto.com/dngood/759825

你可能感兴趣的文章
设计师图解TCP连接过程
查看>>
这其实是一个求助的文章
查看>>
你必须掌握的 RESTful 后端接口设计参考书
查看>>
翻译 | 摆脱浏览器限制的JavaScript
查看>>
兼容iOS 10:配置获取隐私数据权限声明
查看>>
Docker 使用笔记
查看>>
jest && vue
查看>>
前端每周清单第 36 期:深入 Vue 2.5 类型增强、Puppeteer 端到端测试、PayPal 跨域套装...
查看>>
iOS - Swift 面向协议编程(二)
查看>>
闲扯下午引爆乌云社区“盗窃”乌云币事件
查看>>
原生js轮盘抽奖实例分析(幸运大转盘抽奖)
查看>>
知否?知否?情人眼里出代码
查看>>
DataBinding数据绑定基本讲解
查看>>
15 分钟无门槛构建服务器性能监控系统
查看>>
【JS第19期】设计模式-简单工厂模式
查看>>
Flask之旅: 快速上手
查看>>
Android图片加载开源库深度推荐,安利Fresco
查看>>
聊聊flink的MemoryPool
查看>>
聊聊flink KeyedStream的KeySelector
查看>>
spring mvc如何计算BEST_MATCHING_PATTERN_ATTRIBUTE
查看>>