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

  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. # tar zxvf memcached-1.4.10.tar.gz
  6. # cd memcached-1.4.10
  7. # ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/
  8. # 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 安装脚本

memcached 服务脚本

memcached 安装包


三 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. #memcached server 2
  56. # telnet 10.0.1.252 11211
  57. Trying 10.0.1.252...
  58. Connected to 10.0.1.252 (10.0.1.252).
  59. Escape character is '^]'.
  60. stats items
  61. STAT items:1:number 1
  62. STAT items:1:age 10975
  63. STAT items:1:evicted 0
  64. STAT items:1:evicted_nonzero 0
  65. STAT items:1:evicted_time 0
  66. STAT items:1:outofmemory 0
  67. STAT items:1:tailrepairs 0
  68. STAT items:1:reclaimed 0
  69. STAT items:1:expired_unfetched 0
  70. STAT items:1:evicted_unfetched 0
  71. END
  72. stats cachedump 1 0
  73. ITEM key [4 b; 1325927086 s]
  74. END
  75. get key
  76. VALUE key 0 4
  77. test
  78. END

扩展
Memcache协议中文版

结束

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

Memcached 分布式缓存系统部署与调试的更多相关文章

  1. [Memcached]分布式缓存系统Memcached在Asp.net下的应用

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached ...

  2. memcached分布式缓存系统

    在数据驱动的Web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载.缓存是解决这个问题的好办法.但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵活.此时 ...

  3. 分布式缓存系统 Memcached 整体架构

    分布式缓存系统 Memcached整体架构 Memcached经验分享[架构方向] Memcached 及 Redis 架构分析和比较

  4. Memcached 数据缓存系统

    Memcached 数据缓存系统 常用命令及使用:http://www.cnblogs.com/wayne173/p/5652034.html Memcached是一个自由开源的,高性能,分布式内存对 ...

  5. NCache:最新发布的.NET平台分布式缓存系统

    NCache:最新发布的.NET平台分布式缓存系统在等待Microsoft完成Velocity这个.NET平台下的分布式内存缓存系统的过程中,现在让我们将目光暂时投向其他已经有所建树的软件开发商.Al ...

  6. 分布式缓存系统 Memcached 快速入门

    Memcached介绍   官网地址      Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提 ...

  7. 分布式缓存系统Memcached简介与实践

    缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载.缓存是解决这个问题的好办法.但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵 ...

  8. 分布式缓存系统Memcached简介与实践(.NET memcached client library)

    缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载.缓存是解决这个问题的好办法.但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵 ...

  9. (转)C# 中使用分布式缓存系统Memcached

    转自:http://blog.csdn.net/devgis/article/details/8212917 缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了 ...

随机推荐

  1. 作了点有意义 的事,加入CLOUDSTACK官方文档的中文翻译工作

    https://www.transifex.com/ 昨天到今天,作了个部署构架方面的翻译.

  2. 十大众筹PC:硅谷新生代如何打造下一代计算机

    十大众筹PC:硅谷新生代如何打造下一代计算机     来源:CNET科技资讯网 众筹革命已经让众多吸引人的台式机,笔电和平板PC诞生.下面就是最引人注意和最成功的典范. 尽管PC市场不再象过去那样是一 ...

  3. POJ 2391 容牛问题

    题目大意:给定一个无向图,点i处有Ai头牛,点i处的牛棚能容纳Bi头牛,求一个最短时间T使得在T时间内所有的牛都能进到某一牛棚里去.(1 <= N <= 200, 1 <= M &l ...

  4. 【转】 android 4.4 Step Counter Sensor计步器的使用

    原文网址:http://blog.csdn.net/aikongmeng/article/details/40457233 版权声明:本文为博主原创文章,未经博主允许不得转载. Android 官方参 ...

  5. Servlet&JSP中的知识点

    先sun提出的是Servlet体系,这个体系使得使用JAVA的程序员也能开发基于B/S架构的WEB应用程序,使用Servlet类将HTTP请求和响应封装在标准JAVA类中来实现各种WEB应用方案.随着 ...

  6. collapse

    1. border-collapse 该CSS属性用来设定表格的行和列的边框是合并成单边框,还是分别有各自的边框 separate 缺省值.边框分开,不合并. collapse 边框合并.即如果相邻, ...

  7. Delphi 多线程 “尚未调用CoInitialize错误”的解决方法

    在Delphi  多线程中出现“尚未调用CoInitialize错误”的解决方法 解决方法如下: function  TMyThread.ExecTimer: Boolean;begin  Resul ...

  8. 【2013杭州区域赛】部分题解 hdu4770—4780

    1008: 题意: 有20W个数,每个数都在20W以内,现在有20W个询问,每次询问L,R区间内不会打架的数有多少个 定义两个数不互质 就会打架 解法: 脑洞很大的一道题,先要进行预处理,对每一个数预 ...

  9. [Design Pattern] Mediator Pattern 简单案例

    Meditor Pattern,即调解模式,用一个调解类类处理所有的沟通事件,使得降低多对象之间的沟通难度,属于行为类的设计模式.为了方便理解记忆,我也称其为,沟通模式. 下面是一个调解模式的简单案例 ...

  10. Java中Websocket使用实例解读

    介绍 现在很多网站为了实现即时通讯,所用的技术都是轮询(polling).轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客服端的浏览器 ...