- 浏览: 2538424 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (676)
- linux运维 (157)
- php (65)
- mysql (78)
- nginx (27)
- apche (18)
- framework (6)
- windows (9)
- IDE工具 (23)
- struts2 (7)
- java (13)
- 移动互联网 (14)
- memcache redis (23)
- shell基础/命令/语法 (37)
- shell (50)
- puppet (4)
- C (11)
- python (9)
- 产品经理 (27)
- Sphinx (4)
- svn (12)
- 设计构建 (12)
- 项目管理 (44)
- SEO (1)
- 网站架构 (26)
- 审时度势 (42)
- 网络 (14)
- 激发事业[书&视频] (81)
- 其它 (12)
- 摄影 (8)
- android (21)
最新评论
-
zhongmin2012:
原文的书在哪里
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
renzhengzhi:
你好,请问个问题,从master同步数据到slave的时候,s ...
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
ibc789:
你好,看了你的文章,我想请教个问题, 我在用 redis的时候 ...
redis 的两种持久化方式及原理 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
为什么会有Memcache和memcached两种名称?
其实Memcache是这个项目的名称,而memcached是它服务器端的主程序文件名,知道我的意思了把~~~~。一个是项目名称,一个是主程序文件名
Linux下Memcache服务器端的安装
服务器端主要是安装memcache服务器端,目前的最新版本是 memcached-1.3.0 。
下载:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz
另外,Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent,libevent的最新版本是libevent-1.3。(如果你的系统已经安装了libevent,可以不用安装)
官网:http://www.monkey.org/~provos/libevent/
下载:http://www.monkey.org/~provos/libevent-1.3.tar.gz
用wget指令直接下载这两个东西.下载回源文件后。
1.先安装libevent。这个东西在配置时需要指定一个安装路径,即./configure –prefix=/usr;然后make;然后make install;
2.再安装memcached,只是需要在配置时需要指定libevent的安装路径即./configure –with-libevent=/usr;然后make;然后make install;
这样就完成了Linux下Memcache服务器端的安装。详细的方法如下:
1.分别把memcached和libevent下载回来,放到 /tmp 目录下:
# cd /tmp
# wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz
# wget http://www.monkey.org/~provos/libevent-1.2.tar.gz
2.先安装libevent:
# tar zxvf libevent-1.2.tar.gz
# cd libevent-1.2
# ./configure -prefix=/usr
# make
# make install
3.测试libevent是否安装成功:
# ls -al /usr/lib | grep libevent
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent-1.2.so.1 -> libevent-1.2.so.1.0.3
-rwxr-xr-x 1 root root 263546 11?? 12 17:38 libevent-1.2.so.1.0.3
-rw-r–r– 1 root root 454156 11?? 12 17:38 libevent.a
-rwxr-xr-x 1 root root 811 11?? 12 17:38 libevent.la
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent.so -> libevent-1.2.so.1.0.3
还不错,都安装上了。
4.安装memcached,同时需要安装中指定libevent的安装位置:
# cd /tmp
# tar zxvf memcached-1.2.0.tar.gz
# cd memcached-1.2.0
# ./configure -with-libevent=/usr
# make
# make install
如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。
安装完成后会把memcached放到 /usr/local/bin/memcached ,
5.测试是否成功安装memcached:
# ls -al /usr/local/bin/mem*
-rwxr-xr-x 1 root root 137986 11?? 12 17:39 /usr/local/bin/memcached
-rwxr-xr-x 1 root root 140179 11?? 12 17:39 /usr/local/bin/memcached-debug
安装Memcache的PHP扩展
1.在http://pecl.php.net/package/memcache 选择相应想要下载的memcache版本。
2.安装PHP的memcache扩展
tar vxzf memcache-2.2.1.tgz
cd memcache-2.2.1
/usr/bin/phpize
./configure -enable-memcache -with-php-config=/usr/bin/php-config -with-zlib-dir
make
make install
3.上述安装完后会有类似这样的提示:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/
4.把php.ini中的extension_dir = “./”修改为
extension_dir = “/usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/”
5.添加一行来载入memcache扩展:extension=memcache.so
memcached的基本设置:
1.启动Memcache的服务器端:
# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.12.201 -p 13001 -c 256 -P /tmp/memcached.pid
-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
-u是运行Memcache的用户,我这里是root,
-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.12.201,
-p是设置Memcache监听的端口,我这里设置了13001,最好是1024以上的端口,
-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,
2.如果要结束Memcache进程,执行:
# kill `cat /tmp/memcached.pid`
也可以启动多个守护进程,不过端口不能重复。
3.重启apache,service httpd restart
Memcache环境测试:
运行下面的php文件,如果有输出This is a test!,就表示环境搭建成功。开始领略Memcache的魅力把!
<?php
$mem = new Memcache;
$mem->connect("192.168.12.201", 13001);
$mem->set('key','This is a test!', 0, 60);
$val = $mem->get('key');
echo $val;
?>
========================================================php.ini session memcache
实现Session的功能,基本上是通过
* 设置客户端的Cookie来保存SessionID,
* 然后把用户的数据保存在服务器端,最后通
* Cookie中的Session Id来确定一个数据是否是用户的,
原始
session.save_handler = files
mem:
session.save_handler = memcache
session.save_path = "tcp://192.168.0.26:13001,tcp://192.168.0.26:13002"
session.use_cookies = 1
//memcache 配置数组
$memcache_servers=array(
array("host"=>"192.168.0.26",
"port"=>"14001",
"persistent"=>true,
"weight"=>1,
"timeout"=>1,//1为默认值,单位为秒
"retry_interval"=>2,
"status"=>true,
"failure_callback"=>"memcacheConnectLog"
),
array("host"=>"192.168.0.26",
"port"=>"14002",
"persistent"=>true,
"weight"=>1,
"timeout"=>1,//1为默认值,单位为秒
"retry_interval"=>2,
"status"=>true,
"failure_callback"=>"memcacheConnectLog" //写入日志函数
)
);
====================监控
netstat -an | grep memcache
ps -ef|grep memcache
cd memcache-2.2.4
[zhangy@BlackGhost memcache-2.2.4]$ ls |grep .php
example.php
memcache.php
run-tests.php
把memcache.php文件,cp到你的web服务器上面
cp memcache.php /home/zhangy/www/test
vim /home/zhangy/www/test/memcache.php 打开修改配置
define('ADMIN_USERNAME','zhangy'); // Admin Username
define('ADMIN_PASSWORD','adsfadf'); // Admin Password
$MEMCACHE_SERVERS[] = '192.168.12.201:13001'; // add more as an array
$MEMCACHE_SERVERS[] = '192.168.12.201:13002'; // add more as an array
能过url访问memcache.php
Hits: 29 (67.4%) #点击了29
Misses: 14 (32.6%) #字面意思,丢失了14。我这样说肯定有很多人想,这14是memcache没起作用。
对的,是没有起作用,第一次都不会起作用,如果不明白,去搞清楚,memcache的调用原理。
-----------------
telnet 192.168.12.201 13001 这样的命令连接上memcache,然后直接输入stats就可以得到当前memcache的状态
这些状态的说明如下:
+K `"y`#t yt0
pid | memcache服务器的进程ID |
uptime | 服务器已经运行的秒数 |
time | 服务器当前的unix时间戳 |
version | memcache 版本 |
pointer_size | 当前操作系统的指针大小(32位系统一般是32bit) |
rusage_user | 进程的累计用户时间 |
rusage_system | 进程的累计系统时间 |
curr_items | 服务器当前存储的items数量 |
total_items | 从服务器启动以后存储的items总数量 |
bytes | 当前服务器存储items占用的字节数 |
curr_connections | 当前打开着的连接数 |
total_connections | 从服务器启动以后曾经打开过的连接数 |
connection_structures | 服务器分配的连接构造数 |
cmd_get | get命令(获取)总请求次数 |
cmd_set | set 命令(保存)总请求次数 |
get_hits | 总命中次数 |
get_misses | 总未命中次数 |
evictions | 为获取空闲内存而删除的items数(分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items) |
bytes_read | 总读取字节数(请求字节数) |
bytes_written | 总发送字节数(结果字节数) |
limit_maxbytes | 分配给memcache的内存大小(字节) |
threads | 当前线程数 |
===========================shell脚本检查memcache进程并自动重启
vim /etc/memcached_check.sh
#!/bin/sh
#check memcache process and restart if down
mm_bin="/usr/local/bin/memcached"
mm_log="/usr/local/webserver/apache2/logs/memcached_check.log"
mm_ports=("13002")
mm_param=("-d -m 500 -u www -p 13002 -c 256")
mm_count=${#mm_ports[@]}
t=$(date -d "today" +"%Y-%m-%d %H:%M:%S")
i=0
while [ $i -lt $mm_count ]
do
mm_exists=`ps -ef|grep "memcached"|grep "${mm_ports[$i]}"|grep -v grep|wc -l`
if [ "$mm_exists" == "0" ]; then
${mm_bin} ${mm_param[$i]} 2>&1 > /dev/null &
echo "${t} : ${mm_bin} ${mm_param[$i]}" >> ${mm_log}
fi
let i++
done
============
chmod +x /etc/memcached_check.sh
添加为自动执行:
#crontab -e
0-59 * * * * /bin/sh /etc/memcached_check.sh
系统每10分钟会自动执行memcached_check.sh
*/10 * * * * /bin/sh /etc/memcached_check.sh
-----------
#!/bin/sh
#check memcache process and restart if down
mm_bin="/usr/local/bin/memcached"
mm_log="/home/xxx/memcached_check.log"
mm_ports=("11211" "11212")
mm_param=("-d -m 20480 -p 11211 -u www" "-d -m 256 -p 11212 -u www")
mm_count=${#mm_ports[@]}
t=$(date -d "today" +"%Y-%m-%d %H:%M:%S")
i=0
while [ $i -lt $mm_count ]
do
mm_exists=`ps -ef|grep "memcached"|grep "${mm_ports[$i]}"|grep -v grep|wc -l`
if [ "$mm_exists" == "0" ]; then
${mm_bin} ${mm_param[$i]} 2>&1 > /dev/null &
echo "${t} : ${mm_bin} ${mm_param[$i]}" >> ${mm_log}
fi
let i++
done
======================
添加为自动执行:
#crontab -e
*/10 * * * * /bin/sh /home/xxx/memcached_check.sh
系统每10分钟会自动执行memcached_check.sh
---------------------
备用shell语句:
#检查mysql状态
PORT=`netstat -na | grep "LISTEN" | grep "3306" | awk '{print $4}' | awk -F. '{print $2}'`
if [ "$PORT" -eq "3306" ]
#检查mysql占CPU负载
mysql_cpu=`top -U root -b -n 1 | grep mysql | awk '{print $10}'|awk -F. '{print $1}'`
#如果mysql cpu负载大于80,则重启mysql
if [ "$mysql_cpu" -ge "80" ]
#获得相关信息
ps -ef|grep "memcached"|grep -v "grep"|wc -l
ps -ef|grep "memcached"|grep "11211"|grep -v "grep"|wc -l
ps aux|grep "memcached"|grep -v "grep"|awk '{sum+=$4;n++};END{print sum}'
ps aux|grep "memcached"|grep -v "grep"|awk '{printf $1}'
MYPORT=`netstat -na|grep "tcp"|grep "3306"|awk -F[:" "]+ '{print $5}'`
HAPORT=`netstat -na|grep "udp"|grep "694"|awk -F[:" "]+ '{print $5}'`
PING=`ping -c 5 www.linuxtone.org|awk -F, '/packets/{print $3}'|cut -c 2-|awk '{print $1}'`
DB1IP=`ifconfig eth0|awk '/inet/{print $2}'|cut -c 6-`
-----------------------
shell if语句的一些资料:
–b 当file存在并且是块文件时返回真
-c 当file存在并且是字符文件时返回真
-d 当pathname存在并且是一个目录时返回真
-e 当pathname指定的文件或目录存在时返回真
-f 当file存在并且是正规文件时返回真
-g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真
-h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效
-k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真
-p 当file存在并且是命令管道时返回为真
-r 当由pathname指定的文件或目录存在并且可读时返回为真
-s 当file存在文件大小大于0时返回真
-u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真
-w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。
-o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。
UNIX Shell 里面比较字符写法:
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-le 小于等于
-ge 大于等于
-z 空串
= 两个字符相等
!= 两个字符不等
-n 非空串
- libevent-1.2.tar.gz (404.1 KB)
- 下载次数: 5
- memcached-1.2.0.rar (139.8 KB)
- 下载次数: 5
- memcache-2.2.5.rar (35.2 KB)
- 下载次数: 4
发表评论
-
通过Keepalived实现Redis Failover自动故障切换功能[实践分享]
2015-03-12 17:10 7420参考资料:http://patrick-tang.blog ... -
Redis学习手册(主从复制)
2015-03-12 17:05 7349一、Redis的Replication: ... -
redis 的两种持久化方式及原理
2015-03-12 16:52 63330Redis是一种高级key-value数据库。它跟memc ... -
Redis指令手册中文版
2014-08-08 17:09 957连接控制QUIT :退出,关 ... -
Redis服务的监控
2013-01-17 16:00 6718redis 监控工具安装配置http://blog.sin ... -
【汇总】redis
2012-04-16 13:51 1450http://bbs.chinaunix.net/thread ... -
memcache运用代码
2011-07-22 11:38 1419interface ICache { pub ... -
memcache 丢数据解决方案
2011-07-01 11:17 2700一小时以内数据变化都存放到memcached中,无论数据读取或 ... -
Memcached repcached同步
2011-06-10 14:10 2201#安装 wget http://downloads.sour ... -
memcached命中率问题
2011-06-09 21:14 2004http://www.iteye.com/topic/2256 ... -
php遍历memcache所有键值
2011-05-31 17:56 4375很有用的东东,PHP遍历MEMCACHE的所有键,在做管理me ... -
memcached全面剖析和深度剖析
2011-05-15 14:43 1685Memcached深度分析(原创) 2009年2月11日 ... -
【监控】netstat+telnet+m-top+phpmemcached
2011-03-31 22:01 30401G=1024*1024*1024=1073741824 by ... -
关于session和memcache的若干问题
2010-09-20 15:17 5596=============================== ... -
Memcached深度分析----转新浪开发者博客
2009-07-11 22:36 1665http://blog.developers.api.sina ... -
多台memcache 研究
2009-07-11 13:07 4865第一种方法是通过设置特殊key前缀实现分布,基本可以实现mem ... -
Memcache分组和同步机制的实现--这不是memcache集群了么
2009-07-05 21:53 13075首先我们明确了解就是Memcache是一个简单、快速、高效的分 ... -
memcached全面剖析–5. memcached的应用和兼容程序
2009-07-05 21:31 1608memcached的连载终于要结束了。到上次为止,我们介绍了与 ... -
[推荐]memcached全面剖析–4. memcached的分布式算法:Consistent Hashing
2009-07-05 21:20 2521第2次 、 第3次 由前坂介绍了memcached的内部情况 ... -
【汇总】Memcache
2009-07-01 11:40 3717memcached全面剖析和深度剖析.rar ...
相关推荐
CentOS 安装配置 Memcached 在本文中,我们将详细介绍如何在 CentOS 系统上安装和配置 Memcached。Memcached 是一个高性能的分布式内存对象缓存系统,广泛应用于各种 web 应用程序中,以提高应用程序的性能和响应...
本主题将探讨如何在CentOS操作系统上安装Memcache服务器,并利用Java作为客户端与之交互。以下是详细的步骤和相关知识点。 首先,我们需要在CentOS上安装Memcache服务器。这通常涉及以下几个步骤: 1. **更新系统*...
在安装Memcache后,需要配置它以启动服务。创建一个名为`/etc/sysconfig/memcached`的配置文件,并添加以下内容: ```bash sudo vi /etc/sysconfig/memcached # 内容如下: PORT="11211" USER="memcached" MAXCONN...
本文将详细介绍如何在Linux环境下安装和配置Memcache服务器端及PHP扩展。 首先,确保你的系统满足基本的安装条件。你需要一个支持编译的环境,通常在Linux发行版中,如Ubuntu、CentOS或Debian,这些环境已经预装。...
### CentOS 5.4 下的 Memcache 安装步骤 (Linux+Nginx+PHP+Memcached) 在 CentOS 5.4 系统上搭建 Linux+Nginx+PHP+Memcached 运行环境是一项常见的任务,尤其对于那些希望提高网站性能和响应速度的开发者来说尤为...
在Linux系统,特别是CentOS 5.3这样的老版本中,安装和配置现代软件可能会遇到一些挑战,因为这些系统可能不包含最新版本的库和工具。在这个教程中,我们将详细介绍如何在CentOS 5.3上安装Memcached服务以及相关的...
2. **安装库**:通过包管理器(如apt-get for Ubuntu或yum for CentOS)安装libevent库,因为Memcache依赖于它。 ``` sudo apt-get install libevent-dev ``` 3. **下载并编译Memcache**:从Memcache的官方...
**Memcache 安装配置使用说明** --- **1、简介** 1.1 **文档目的** 本文档旨在提供详细的步骤和指南,帮助用户成功地在他们的系统上安装、配置和使用Memcache,这是一个高效的分布式内存对象缓存系统,常用于缓解...
在Linux环境下,可以使用以下命令安装: - Ubuntu/Debian: `sudo apt-get install memcached` - CentOS/RHEL: `sudo yum install memcached` 2. **启动与停止服务**: 安装完成后,你可以使用系统服务管理命令启动...
### CentOS 6.5 安装LNMP服务器教程 #### 一、概述 本文将详细介绍如何在CentOS 6.5上安装LNMP(Linux+Nginx+MySQL+PHP)服务器环境。LNMP架构是一种非常流行的Web服务器组合,它不仅性能高效而且配置灵活,非常...
在Linux环境下安装Memcached是一项常见的任务,特别是在搭建高性能、分布式内存缓存系统时。Memcached是一款轻量级的、开源的、基于内存的数据存储服务,它用于存储小块的任意类型的数据,如数据库查询结果、网页...
这个过程包括了Apache的安装、PHP环境的搭建以及Oracle Instant Client的支持,同时还涉及到了MySQL数据库的安装和配置,以及Memcache扩展的安装。下面我们将详细地探讨这些步骤。 首先,你需要下载Apache ...
这个安装手册将引导你完成在Linux环境下安装和配置Memcached的过程。 首先,让我们了解Memcached的基本概念。Memcached是一个基于内存的数据存储系统,它能够存储键值对,并通过网络在多个服务器之间共享这些数据。...
- **缓存服务**: 安装`memcache`来提高网站的访问速度。 - **代理缓存**: 安装`Squid`作为HTTP代理缓存服务器。 - **安全模块**: 安装`mod_security`来增加Web应用的安全性。 - **论坛系统**: 安装`vBulletin`作为...
本文将深入探讨如何在CentOS操作系统上进行完整的LANMP安装与配置,并涉及MongoDB数据库和Memcache缓存服务的集成。 ### CentOS系统准备 首先,确保你的CentOS系统是最新的。通过运行以下命令更新系统: ```bash ...
在完成了Oracle的安装后,可以继续安装和配置其他基础应用服务,如SVN(版本控制系统)、Redis(内存数据存储)和Memcache(缓存系统),这些服务与Oracle一起可以构建出强大的后端服务架构。 以上就是在CentOS 7上...
构建memcache集群是一个涉及多个步骤的过程,包括安装、配置、客户端设置以及可能的负载均衡策略。正确地实施这些步骤,可以显著提升高并发应用的性能,降低数据库压力。记住,持续监控和优化是保持系统高效运行的...
以下是一份详细的Linux环境下Memcached的安装步骤,包括所需软件包的获取和配置。 1. **系统准备**: - 首先,确保你的Linux发行版是基于Debian或Red Hat的,因为这些系统的包管理器支持Memcached。 - 更新系统包...
### LAMP环境在CentOS 6/6.5 64位系统上的安装流程 #### 环境准备与依赖安装 本指南旨在详细介绍如何在CentOS 6/6.5 64位操作系统上安装LAMP(Linux、Apache、MySQL、PHP)环境。LAMP是一种流行的开源Web开发平台...
本文将详细介绍如何在CentOS 5.5(RedHat 5)上安装配置LAMP环境,并集成Memcache和Zend Optimizer,旨在为初学者提供一个完整的指南。 #### 二、Apache Web服务器安装与配置 **1. 下载与解压Apache** ``` # tar ...