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 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
- # lsof -i :11211
- COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
- memcached 8999 root 26u IPv4 12244 TCP one.t.com:11211 (LISTEN)
- 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
- # 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 测试文件
- <?
- $memcache = new Memcache; //创建一个memcache对象
- $memcache->connect('localhost', 11211) or die ("Could not connect"); //连接Memcached服务器
- $memcache->set('key', 'test'); //设置一个变量到内存中,名称是key 值是test
- $get_value = $memcache->get('key'); //从内存中取出key的值
- echo $get_value;
- ?>
- 输出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脚本与安装包
1 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 [4 b; 1325927086 s]
- END
- get key
- VALUE key 0 4
- test
- END
结束
memcached 节省了磁盘读写、数据库连接、Sql解析资源;它是使用内存来管理数据的,所以它可以提供比直接读取数据库更好的性能。在大型系统中,访问同样的数据是很频繁的,memcached可以大大降低数据库压力。
memcached 也经常作为服务器之间数据共享的存储媒介,例如在web集群下session可以保存在memcached中,被多个应用共享。
memcached 是将数据放在内存中,不是持久化存储,一旦服务器重启,数据将会丢失。
Memcached 分布式缓存系统部署与调试的更多相关文章
- [Memcached]分布式缓存系统Memcached在Asp.net下的应用
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached ...
- memcached分布式缓存系统
在数据驱动的Web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载.缓存是解决这个问题的好办法.但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵活.此时 ...
- 分布式缓存系统 Memcached 整体架构
分布式缓存系统 Memcached整体架构 Memcached经验分享[架构方向] Memcached 及 Redis 架构分析和比较
- Memcached 数据缓存系统
Memcached 数据缓存系统 常用命令及使用:http://www.cnblogs.com/wayne173/p/5652034.html Memcached是一个自由开源的,高性能,分布式内存对 ...
- NCache:最新发布的.NET平台分布式缓存系统
NCache:最新发布的.NET平台分布式缓存系统在等待Microsoft完成Velocity这个.NET平台下的分布式内存缓存系统的过程中,现在让我们将目光暂时投向其他已经有所建树的软件开发商.Al ...
- 分布式缓存系统 Memcached 快速入门
Memcached介绍 官网地址 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提 ...
- 分布式缓存系统Memcached简介与实践
缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载.缓存是解决这个问题的好办法.但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵 ...
- 分布式缓存系统Memcached简介与实践(.NET memcached client library)
缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载.缓存是解决这个问题的好办法.但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵 ...
- (转)C# 中使用分布式缓存系统Memcached
转自:http://blog.csdn.net/devgis/article/details/8212917 缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了 ...
随机推荐
- 全表扫描引发的db file sequential read
今天我要做一个SQL调优,监控该SQL, 利用ASH 监控 该SQL是在sid=4848 上面跑的 db file sequential read等待事件有3个参数:file#,first block ...
- 【转】 Linux中的工作队列
原文网址:http://blog.chinaunix.net/uid-20583479-id-1920134.html 工作队列一般用来做滞后的工作,比如在中断里面要做很多事,但是比较耗时,这时就可以 ...
- SQL Standard Based Hive Authorization(基于SQL标准的Hive授权)
说明:该文档翻译/整理于Hive官方文档https://cwiki.apache.org/confluence/display/Hive/SQL+Standard+Based+Hive+Authori ...
- (转载)apc_fetch
(转载)http://php.net/manual/zh/function.apc-fetch.php apc_fetch (PECL apc >= 3.0.0) apc_fetch — 从缓存 ...
- Mysql 的字符编码机制、中文乱码问题及解决方案【转载】
本文转载自:http://hi.baidu.com/huabinyin/item/7f51e462df565c97c4d24929.感谢作者及相关博主. 相信很多朋友都会对字符编码敬而远 ...
- 《算法实战策略》-chaper19-队列、栈和双端队列
对于计算机专业的学生来说,他们一定会很熟悉一句话:程序设计 = 算法 + 数据结构.而根据笔者的理解,所谓程序设计其实就是为了编程解决实际问题,所谓算法是一种解决问题某种思维的方法,但是思维需要得到编 ...
- in, out, ref
C#中的函数传递方式可以为in.out.ref(引用) in方式的是默认的传递方式,即向函数内部传送值,不作讲解 很多语言都有类似的操作从函数向调用者返回值,这样我们可以通过函数的调用返回多个值,因为 ...
- ORACLE 索引概述
索引是数据库中一种可选的数据结构,她通常与表或簇相关.用户可以在表的一列或数列上建立索引,以提高在此表上执行 SQL 语句的性能.就像本文档的索引可以帮助读者快速定位所需信息一样,Oracle 的索引 ...
- Jenkins错误“editable email notification aborted due to exception”的问题解决
如果出现:“editable email notification aborted due to exception”这样的错误,尝试升级一下jenkins,估计是这个导致的. 解决思路: http: ...
- Java中对象的上转型对象
1. 定义 如果B类是A类的子类或间接子类,当用B类创建对象b并将这个对象b的引用赋给A类对象a时,如: A a;a = new B();ORA a;B b = new B();a = b; 则称A类 ...