超详细Memcached+LAMP搭建详解操作命令

栏目: 数据库 · 发布时间: 7年前

内容简介:Memcached是一套高性能内存对象缓存系统,用于一些高负载的Web网站,主要作用是通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的响应速度、提高可扩展性。Memcached是典型的C/S架构,因此需要安装服务器端与客户端。服务器端是用C语言编写的,客户端可用任何语言来编写,如PHP、 Python、Perl等。为了提高性能,Memcached中保存的数据都存储在memcached内置的内存存储空间中,读取速度快。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全

简介

Memcached是一套高性能内存对象缓存系统,用于一些高负载的Web网站,主要作用是通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的响应速度、提高可扩展性。Memcached是典型的C/S架构,因此需要安装服务器端与客户端。服务器端是用 C语言 编写的,客户端可用任何语言来编写,如 PHPPythonPerl 等。为了提高性能,Memcached中保存的数据都存储在 memcached 内置的内存存储空间中,读取速度快。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,缓存的数据量达到指定值或者过期之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题

工作原理

超详细Memcached+LAMP搭建详解操作命令

首先,Web客户端发出获取数据的请求到Web服务器的应用程序,应用程序调用Memcache客户端程序库接口,连接Memcached服务器,分为两种情况:

1.如果此时Web客户端所请求的数据在Memcached中已经缓存,则Memcached将数据返回给Web客户端,步骤为:1->2->5->6->7->8

2.如果Memcached没有缓存Web客户端所请求的数据,则Memcache客户端程序将请求转发给数据库服务器,数据库服务器将数据返回给Memcache客户端程序,然后返回给Web客户端,同时Memcache客户端程序将数据缓存到Memcached服务器,以备下次有客户端请求同样的数据,步骤分别为:1->2->3->4->7->8及4->5

实验环境

主机名称 操作系统 IP地址 主要软件
memcached CentOS_7.4_x86_64 192.168.100.71 libevent-2.1.8-stable;memcached-1.5.6
client CentOS_7.4_x86_64 192.168.100.73 LAMP架构相关软件

搭建步骤

一、服务器端安装Memcache

1、安装libevent

[root@memcached ~]# tar xvfz libevent-2.1.8-stable.tar.gz

[root@memcached ~]# cd libevent-2.1.8-stable/

[root@memcached libevent-2.1.8-stable]# ./configure --prefix=/usr/local/libevent

[root@memcached libevent-2.1.8-stable]# make && make install

2、安装Memcache

[root@memcached ~]# tar xvfz memcached-1.5.6.tar.gz

[root@memcached ~]# cd memcached-1.5.6/

[root@memcached memcached-1.5.6]# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/

[root@memcached memcached-1.5.6]# make && make install

3、优化路径

[root@memcached ~]# ln -s /usr/local/memcached/bin/* /usr/local/bin/

4、启动服务

[root@memcached ~]# memcached -d -m 32M -p 11211 -u root

#解析:
-d: 以守护进程的方式运行memcache
-m: 定义memcache分配的存储空间
-p: 指定端口号
-u: 指定运行用户

[root@memcached ~]# netstat -anpt | grep '11211'

超详细Memcached+LAMP搭建详解操作命令

5、使用telnet进行本地测试

[root@memcached ~]# yum -y install telnet #安装telnet服务

[root@memcached ~]# telnet localhost 11211 #连接memcache

二、Mencache相关命令

1、Mencache存储命令

1).add命令[ add命令用于将value(数据值)存储在指定的key(键)中 ]

add new_key 0 900 5     #添加值
hello
STORED    #保存成功,输出STORED ;ERROR,在保存失败后输出。

解析:
new_key   #键值 key-value 结构中的 key,用于查找缓存值
0         #可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 
900       #在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
5         #在缓存中存储的字节数
hello     #存储的值(始终位于第二行)
delete new_key  #删除相应的数据
DELETED

2).set命令[ set命令用于将value(数据值)存储在指定的key(键)中。注意如果set的key已经存在,该命令可以更新该key所对应的原来的数据,也就是实现更新的作用 ]

add new_key 0 900 5    #添加数据
hello
STORED
set new_key 0 900 5    #更新数据
word!  
STORED
get new_key            #查看键对应的值,数据已经更新
VALUE new_key 0 5
word!
END
delete new_key         #删除相应的数据
DELETED

3).replace命令[ replace命令用于替换已存在的key(键)的value(数据值)。如果key不存在,则替换失败 ]

replace username 0 900 3
tom
NOT_STORED  #执行替换失败后输出,原因key不存在
add new_key 0 900 16
some_other_value
NOT_STORED  #执行替换失败后输出,原因key不存在
STORED
replace new_key 0 900 10  #替换数据
data_value
STORED
get new_key               #查看键对应的值,数据已经替换,并且存储的字节数也已经更改
VALUE new_key 0 10
data_value
END
delete new_key            #删除相应的数据
DELETED

4).append命令[ append命令用于向已存在key(键)的value(数据值)后面追加数据 ]

set runoob 0 900 9      #添加一条数据
memcached
STORED
append runoob 0 900 6   #对于键"runoob"追加了6个字节格式,并且添加字符串"&redis"
&redis
STORED
get runoob              #查询此数据
memcached&redis
END
delete runoob           #删除相应的数据
DELETED

5).prepend命令[ prepend命令用于向已存在key(键)的value(数据值)前面追加数据 ]

set runoob 0 900 9        #添加数据
memcached
STORED
prepend runoob 0 900 6    #在"runoob "键对应的值前面追加"redis&"
redis&
STORED
get runoob                #查询数据
VALUE runoob 0 15
redis&memcached
delete runoob             #删除相应的数据
DELETED

6).CAS命令[ CAS命令用于执行一个"检查并设置"的操作,它仅在当前客户端最后一次取值后,该key 对应的值没有被其他客户端修改的情况下, 才能够将值写入。检查是通过cas_token参数进行的, 这个参数是Memcach指定给已经存在的元素的一个唯一的64位值 ]

cas tp 0 900 9
ERROR            #缺少token
cas tp 0 900 9 2    
memcached
NOT_FOUND           #键tp不存在
set tp 0 900 9             #添加数据
memcached
STORED
gets tp             #获取唯一令×××信息    
VALUE tp 0 9 12     #令×××值为12
memcached
END
cas tp 0 900 5 12   #检查令×××值为"12",设置值
redis
STORED              
#注意输出信息
STORED:   保存成功后输出
ERROR:    保存出错或语法错误
EXISTS:   在最后一次取值后另外一个用户也在更新该数据
NOT_FOUND:服务上不存在该键值
get tp              #再次查询数据
VALUE tp 0 5
redis
END

2、Mencache查找命令

1).get命令[ get命令获取存储在key(键)中的value(数据值),如果key不存在,则返回空 ]

set runoob 0 900 9  #添加一条数据
memcached
STORED
get runoob          #查找键对应的值
VALUE runoob 0 9
memcached
END
delete runoob       #删除相应的数据
DELETED

2). gets命令[ gets命令获取带有CAS令×××存的value(数据值),如果key不存在,则返回空 ]

set runoob 0 900 9      #添加第一条数据
memcached
STORED
set test 0 900 5        #添加第二条数据
redis
STORED
gets runoob test        #查询数据
VALUE runoob 0 9 15     #"15"代表"runoob"键对应唯一令×××值
memcached
VALUE test 0 5 16       #"16"代表"test"键对应唯一令×××值
redis
END
delete runoob       #删除相应的数据
delete test

3).delete命令[ delete命令用于删除已存在的key(键) ]

之前操作已经演示,略……

4).incr与decr命令[ incr与decr命令用于对已存在的 key(键) 的数字值进行自增或自减操作;incr与decr命令操作的数据必须是十进制的32位无符号整数 ]

set visitors 0 900 2    #添加一条数据
10
STORED
decr visitors 6               #将"visitors"键对应的值减去6 
4
get visitors                      #减去6之后查看,结果为4
VALUE visitors 0 2
4 
END
delete visitors      #删除相应数据
DELETED

3、Mencache统计命令

1).stats命令[ stats命令用于返回统计信息例如 PID(进程号)、版本号、连接数等 ]

stats
STAT pid 17274                    #memcache服务器进程ID
STAT uptime 17517                 #服务器已运行秒数
STAT time 1537471499              #服务器当前时间戳
STAT version 1.5.6                #服务版本
STAT pointer_size 64              #操作系统指针大小
STAT rusage_user 2.775518         #进程累计用户时间
STAT rusage_system 1.189507       #进程累计系统时间
STAT max_connections 1024         #最大连接数
STAT curr_connections 2           #当前连接数量
STAT total_connections 14         #服务运行以来连接总数
STAT connection_structures 4      #服务分配的连接结构数量
STAT cmd_get 26                   #get命令请求次数
STAT cmd_set 27                   #set命令请求次数          
STAT cmd_flush 0                  #flush命令请求次数                            
STAT get_hits 17                  #get命令命中次数                                  
STAT get_misses 9                 #get命令未命中次数                 
STAT delete_misses 0              #delete命令未命中次数              
STAT delete_hits 8                #delete命令命中次数               
STAT incr_misses 0                #incr命令未命中次数               
STAT incr_hits 0                  #incr命令命中次数               
STAT decr_misses 0                #decr命令未命中次数             
STAT decr_hits 1                  #decr命令命中次数                
STAT cas_misses 1                 #cas命令未命中次数               
STAT cas_hits 0                   #cas命令命中次数                
STAT cas_badval 6                 #使用擦拭次数                               
STAT auth_cmds 0                  #认证命令处理的次数               
STAT auth_errors 0                #认证失败数目           
STAT bytes_read 1415              #读取总字节数
STAT bytes_written 1110           #发送总字节数
STAT limit_maxbytes 33554432      #分配的内存总大小(字节)                
STAT accepting_conns 1            #服务器是否达到过最大连接(0/1)
STAT listen_disabled_num 0        #失效的监听数
STAT threads 4                    #当前线程数
STAT conn_yields 0                #连接操作主动放弃数目
STAT hash_power_level 16          #当前存储占用的字节数
STAT curr_items 0                 #当前存储的数据总数
STAT total_items 19               #启动以来存储的数据总数
STAT evictions 0                  #LRU释放的对象数目
STAT reclaimed 6                  #已过期的数据条目来存储新数据的数目

2).stats items命令[ stats items命令用于显示各个slab中item的数目和存储时长(最后一次访问距离现在的秒数) ]

set runoob 0 900 9      #添加一条数据
memcached
STORED
stats items             #查看
STAT items:1:number 1
STAT items:1:number_hot 0
STAT items:1:number_warm 0
STAT items:1:number_cold 1
STAT items:1:age_hot 0
STAT items:1:age_warm 0
STAT items:1:age 6
STAT items:1:evicted 0
STAT items:1:evicted_nonzero 0
……
delete runoob          #删除相应数据
DELETED

3).stats slabs命令[ stats slabs命令用于显示各个slab的信息,包括chunk的大小、数目、使用情况等 ]

stats slabs
STAT 1:chunk_size 96
STAT 1:chunks_per_page 10922
STAT 1:total_pages 1
STAT 1:total_chunks 10922
STAT 1:used_chunks 1
STAT 1:free_chunks 10921
STAT 1:free_chunks_end 0
STAT 1:mem_requested 74
STAT 1:get_hits 17
STAT 1:cmd_set 28
STAT 1:delete_hits 8
……

4).stats sizes命令[ stats sizes命令用于显示所有item的大小和个数 ]

stats sizes
STAT 96 1   #item大小及个数

5).flush_all命令[ flush_all命令用于清理缓存中的所有键值对。该命令提供了一个可选参数time,用于在制定的时间后执行清理缓存操作 ]

set runoob 0 900 9  #添加一条数据
memcached
STORED
get runoob          #查询数据
VALUE runoob 0 9
memcached
END
flush_all           #清除缓存中所有键值对         
OK
get runoob          #查询为空直接
END

三、客户端安装LAMP架构

1、安装httpd

1).解压相关源码包

[root@client ~]# tar xvfz apr-1.6.2.tar.gz

[root@client ~]# tar xvfz apr-util-1.6.0.tar.gz

[root@client ~]# tar xvfj httpd-2.4.29.tar.bz2

[root@client ~]# mv apr-1.6.2 httpd-2.4.29/srclib/apr

[root@client ~]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util/

2).安装相关依赖包

[root@client ~]# yum -y install \

gcc \

gcc-c++ \

make \

pcre-devel \

expat-devel \

perl

3).安装httpd服务

[root@client ~]# cd httpd-2.4.29/

[root@client httpd-2.4.29]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi

[root@client httpd-2.4.29]# make && make install

4).编辑主配置文件

[root@client ~]# vim /usr/local/httpd/conf/httpd.conf

ServerName www.bt.com:80      #编辑完全主机名
Listen 192.168.100.73:80             #编辑监听地址

5).添加系统服务

[root@client ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd #新建启动脚本

[root@client ~]# vim /etc/init.d/httpd #编辑启动脚本

#  在第2行开始插入以下两行
# chkconfig: 35 85 21                   #35级别自动运行  第85个启动 第21个关闭
# description: Apache is a World Wide Web server        #描述信息

[root@client ~]# chkconfig --add httpd #添加系统服务

6).优化路径

[root@client ~]# ln -s /usr/local/httpd/conf/httpd.conf /etc/ #优化配置文件路径

[root@client ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin/ #优化执行可执行命令路径

7).启动服务

[root@client ~]# systemctl daemon-reload #当添加新服务使用

[root@client ~]# systemctl start httpd.service

[root@client ~]# netstat -anpt | grep ':80'

超详细Memcached+LAMP搭建详解操作命令

2、安装Mysql

1).安装相关 工具

[root@client ~]# yum -y install ncurses-devel autoconf cmake

2).安装mysql

[root@client ~]# tar xzvf mysql-5.6.26.tar.gz #解压

[root@client ~]# cd mysql-5.6.26

[root@client mysql-5.6.26]# cmake \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DEXTRA_CHARSETS=all \

-DSYSCONFIDIR=/etc \

-DMYSQL_DATADIR=/home/mysql/

解析:
DCMAKE_INSTALL_PREFIX:mysql软件安装位置
DDEFAULT_CHARSET:默认字符集                            
DDEFAULT_COLLATION:默认字符校验
DWITH_EXTRA_CHARSETS:额外的编码,请使用ALL来编译                     
DMYSQL_DATADIR:数据目录                          
DMYSQL_DATADIR:配置文件路径

[root@client mysql-5.6.26]# make && make install #编译及编译安装

3).新建配置文件

[root@client ~]# cd /usr/local/mysql/

[root@client mysql]# cp support-files/my-default.cnf /etc/my.cnf

4).添加系统服务

[root@client mysql]# cp support-files/mysql.server /etc/init.d/mysqld #新建启动脚本

[root@client ~]# chmod 755 /etc/init.d/mysqld #修改文件权限

[root@client ~]# chkconfig --add /etc/init.d/mysqld #添加系统服务

[root@client ~]# chkconfig mysqld on #设置开机自启动

5).编辑系统环境变量

[root@client ~]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile #编辑系统环境变量

[root@client ~]# source /etc/profile #重新读取系统环境变量配置文件

[root@client ~]# echo $PATH

6).添加 mysql 进程用户

[root@client ~]# useradd -s /sbin/nologin mysql

[root@client ~]# chown -R mysql:mysql /usr/local/mysql/

7).初始化服务

[root@client ~]# /usr/local/mysql/scripts/mysql_install_db \

--user=mysql \

--ldata=/var/lib/mysql \

--basedir=/usr/local/mysql \

--datadir=/home/mysql

解析:
user:指定数据库管理员
basedir:指定mysql软件安装位置
datadir:指定mysql数据安装位置

8).编辑启动脚本

[root@client ~]# vim /etc/init.d/mysqld

basedir=/usr/local/mysql     #约第46行,指定数据库安装目录
datadir=/home/mysql          #约第47行,指定数据存放目录

9).启动服务

[root@client ~]# systemctl daemon-reload

[root@client ~]# systemctl start httpd.service

[root@client ~]# netstat -anpt | grep ':3306'

超详细Memcached+LAMP搭建详解操作命令

10).初始化密码

[root@client ~]# mysqladmin -u root password "123"

超详细Memcached+LAMP搭建详解操作命令

3、安装php

1).安装相关依赖包

[root@client ~]# yum -y install \

gd \

libpng \

libpng-devel \

pcre \

pcre-devel \

libxml2-devel \

libjpeg-devel

2).安装php

[root@client ~]# tar xjvf php-5.6.11.tar.bz2

[root@client ~]# cd php-5.6.11

[root@client php-5.6.11]# ./configure \

--prefix=/usr/local/php5 \

--with-gd \

--with-zlib \

--with-apxs2=/usr/local/httpd/bin/apxs \

--with-mysql=/usr/local/mysql \

--with-config-file-path=/usr/local/php5 \

--enable-mbstring

[root@client php-5.6.11]# make && make install

3).新建配置文件

[root@client php-5.6.11]# cp php.ini-development /usr/local/php5/php.ini

4).优化路径

[root@client ~]# ln -s /usr/local/php5/bin/

/usr/local/bin/

[root@client ~]# ln -s /usr/local/php5/sbin/

/usr/local/sbin/

5).编辑httpd服务配置文件

[root@client ~]# vim /etc/httpd.conf

LoadModule php5_module        modules/libphp5.so   #约156行,检查此语句是否存在,如果不存在还需要重新安装mysql,如果还没有,直接重装apache

<IfModule dir_module>   #约255行
   DirectoryIndex index.php index.html   #添加index.php默认首页识别
</IfModule>

<IfModule mime_module>  #约370行标签内,添加以下两行,支持PHP后缀
   AddType application/x-httpd-php .php
   AddType application/x-httpd-php-source .phps
……

6).重启服务

[root@client ~]# systemctl restart httpd.service

4、测试

1).测试PHP网页能否正常显示

[root@client ~]# cd /usr/local/httpd/htdocs/ #进入站点

[root@client htdocs]# vim test1.php

<?php
phpinfo();
?>

超详细Memcached+LAMP搭建详解操作命令

2).测试PHP网页能访问MySQL服务器

[root@client ~]# mysql -u root -p123

[root@client ~]# cd /usr/local/httpd/htdocs/

[root@client htdocs]# vim test2.php

<?php
$link=mysql_connect('192.168.100.73','root','123');
if($link) echo "<h1>Welcome to MySQL</h1>";
else echo "Fail!!";
mysql_close();
?>

超详细Memcached+LAMP搭建详解操作命令

四、客户端安装Memcached

1、解压Memcache

[root@client ~]# tar xzvf memcache-2.2.7.tgz

2、用phpize命令将Memcache添加为PHP的一个模块

[root@client ~]# yum -y install autoconf #安装依赖包

[root@client ~]# cd memcache-2.2.7/

[root@localhost memcache-2.2.7]# /usr/local/php5/bin/phpize

3、安装Memcached

[root@localhost memcache-2.2.7]# ./configure --enable-memcache --with-php-config=/usr/local/php5/bin/php-config

[root@localhost memcache-2.2.7]# make && make install

Installing shared extensions: /usr/local/php5/lib/php/extensions/no-debug-zts-20131226/ #安装完成之后,会出现共享组件的位置

超详细Memcached+LAMP搭建详解操作命令

4、编辑php主配置文件

[root@client ~]# vim /usr/local/php5/php.ini

extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-zts-20131226/" #734行,添加共享路径
extension = memcache.so                                                     #添加一行,将memcache模块添加进去

5、编写PHP测试代码调用Memcache程序接口来测试Memcached服务器与客户端协同工作是否正常

[root@client ~]# cd /usr/local/httpd/htdocs/ #进入站点

[root@client htdocs]# vim test3.php

<?php
$memcache = new Memcache();                      #创建memcache实例
$memcache->connect('192.168.100.71',11211);      #连接memcache服务器
$memcache->set('name','hello world',0,60);       #添加一条键值对数据
$result = $memcache->get('name');                #通过key获取相应的value值
unset($memcahe);                                 #销毁实例         
echo $result;
?>

[root@client htdocs]# systemctl restart httpd.service #重启web服务

超详细Memcached+LAMP搭建详解操作命令


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Visual Thinking

Visual Thinking

Colin Ware / Morgan Kaufmann / 2008-4-18 / USD 49.95

Increasingly, designers need to present information in ways that aid their audiences thinking process. Fortunately, results from the relatively new science of human visual perception provide valuable ......一起来看看 《Visual Thinking》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

随机密码生成器
随机密码生成器

多种字符组合密码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具