了解memcache的安装及简单操作

   日期:2020-11-06     浏览:101    评论:0    
核心提示:memcache简介Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结

  • 一、memcache简介
    • 特征
    • 支持的语言
    • Memcached 运行
  • 二、安装memcache示例
    • 1.解压相关软件包
    • 2.编译安装memcache
    • 3.建立软连接,便于系统识别
    • 4.启动memcache
  • 三、memcache基本操作
    • 1.安装telnet工具连接数据库
    • 2.基本操作命令演示
  • 四、客户端访问memcache
    • 安装LAMP架构
    • 1.安装Apache
    • 2.安装MySQL
    • 3.安装PHP
    • 4.测试mysql的连通性
    • 5.安装memcache客户端工具

一、memcache简介

  • Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。
  • Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。
  • Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果。
  • Memcached简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的API兼容大部分流行的开发语言。
  • 本质上,它是一个简洁的key-value存储系统。
  • 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。

特征

加粗样式memcached作为高速运行的分布式缓存服务器,具有以下的特点。

  • 协议简单
  • 基于libevent的事件处理
  • 内置内存存储方式
  • memcached不互相通信的分布式

支持的语言

许多语言都实现了连接memcached的客户端,其中以Perl、PHP为主。仅仅memcached网站上列出的有:

  1. Perl
  2. PHP
  3. Python
  4. Ruby
  5. C#
  6. C/C++
  7. Lua

Memcached 运行

Memcached命令的运行:

 /usr/local/memcached/bin/memcached -h      ## 命令帮助

注意:如果使用自动安装 memcached 命令位于 /usr/local/bin/memcached。

启动选项 描述
-d 启动一个守护进程;
-m 分配给Memcache使用的内存数量,单位是MB;
-u 运行Memcache的用户;
-l 监听的服务器IP地址,可以有多个地址;
-p 设置Memcache监听的端口,,最好是1024以上的端口;
-c 最大运行的并发连接数,默认是1024;
-P 设置保存Memcache的pid文件。

二、安装memcache示例

1.解压相关软件包

[root@localhost ~]# tar zxxf memcached-1.5.6.tar.gz -C /opt/
[root@localhost ~]# tar zxxf libevent-2.1.8-stable.tar.gz -C /opt/

2.编译安装memcache

[root@localhost ~]# yum -y install gcc gcc-c++ make
[root@localhost ~]# cd /opt/libevent-2.1.8-stable
[root@localhost ~]# ./configure --prefix=/usr/local/libevent
[root@localhost libevent-2.1.8-stable]# make -j3 && make install
[root@localhost ~]# cd /opt/memcached-1.5.6
[root@localhost memcached-1.5.6]# ./configure \
> --prefix=/usr/local/memcached \
> --with-libevent=/usr/local/libevent/     ##加载事件库的功能,并指明路径
[root@localhost memcached-1.5.6]# make -j3 && make install

3.建立软连接,便于系统识别

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

4.启动memcache

[root@localhost ~]# memcached -d -m 32m -p 11211 -u root    ## -d指定守护进程,-m指定缓存大小,-p指定端口,-u指定用户
[root@localhost ~]# netstat -anpt | grep memc
tcp        0      0 0.0.0.0:11211           0.0.0.0:*               LISTEN      10573/memcached     
tcp6       0      0 :::11211                :::*                    LISTEN      10573/memcached     
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
setenforce: SELinux is disabled

三、memcache基本操作

1.安装telnet工具连接数据库

[root@localhost ~]# yum -y install telnet    
[root@localhost ~]# telnet 127.0.0.1 11211    ##进入数据库
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

2.基本操作命令演示

  • add创建键
add name 0 0 7        ## 新增键name,第一个0表示不设置序列号,第二个0表示不设置超时时间,最后7指的是字节长度
zhaoliu                ##输入值"zhaoliu";注意,字节长度一定要和输入的键的值向匹配,否则会报错。
STORED    ##表示数据输入成功,error则表示失败

  • get获取键值
get name        ##查看name键的值,有效期和字节长度
VALUE name 0 7   ##提示键名name,超时时间0,长度7
zhaolou     ## 键值为zhaolou
END

  • gets获取键值和更新因子(每进行一次操作,更新因子加1,同DNS的主从更新)
gets name       ## ##会比使用get查看的结果末尾多一个数值,这个数值是更新因子,每对这个键执行一次操作(如get、set等等),更新因子都会加1
VALUE name 0 7 1
zhaolou
END

-set对键进行修改(键可以是已经存在的也可以是不存在的)

set name 0 0 9    ##可以通过set命令更新键的属性和值,若该键不存在,可以充当add创建的作用
zhaoliuyu
STORED
get name      ## 查看键值
VALUE name 0 9
zhaoliuyu
END
  • replace修改键的属性和值,不同于set,只能修改已经存在的键且值不为空的键
replace name 0 0 6     ##修改键name的长度为6
yellow
STORED
get name     ##查看键值
VALUE name 0 6
yellow
END
  • 检查更新,同样也是修改键的属性和值,但是必须是在更新因子相同时才更新(即最后的数值4要和gets得出的更新因子相同才执行)
gets name     ##查看更新因子,现在是3
VALUE name 0 6 3
yellow
END
cas name 0 0 7 4    ##使用cas更新键值,但是更新因子不同步
1234
get name    ## 查看键值,错误数据
CLIENT_ERROR bad data chunk
ERROR
gets name   ## 重新查看更新因子,还是3
VALUE name 0 6 3
yellow
END
cas name 0 0 4 3   ##同步更新因子,进行数据更新
abcd
STORED
get name    ##查看键值,数据更新成功
VALUE name 0 4
abcd
END
  • append 在原本的值后面追加
get name   ##查看原本的值
VALUE name 0 6
yellow
END
append name 0 0 3    ## 追加长度为3 的值RED
RED
STORED
get name    ##再次查看,RED追加到原本的值yellow后面
VALUE name 0 9
yellowRED
END

  • prepend 在原值前面追加
prepend name 0 0 2    ## 在原值前面追加长度为2 的值GO
GO
STORED

get name     ##查看键值
VALUE name 0 11
GOyellowRED
END

  • delete 删除键
delete name   ##删除name键
DELETED   ##提示删除成功
get name   ##查看name键,已经消失
END

  • flush_all,清空所有库数据
  • quit 退出数据库

四、客户端访问memcache

安装LAMP架构

前面有写过详细的安装,这里就直接放脚本执行,不再多解释了

1.安装Apache

[root@localhost ~]# vi apache.sh
#!/bin/bash
echo "正在解压包……"
P1=$(find / -name httpd*.bz2)
P2=$(find / -name apr-util*tar.gz)
P3=$(find / -name apr-[0-9]*tar.gz)
tar zvxf $P2 -C /opt >/dev/null
tar zvxf $P3 -C /opt >/dev/null

read -p "您的Apache源码包名是否为$P1(yes|no)" PAN
if [ $PAN = yes ]
then
echo "正在解压Apache"
 tar jvxf $P1 -C /opt >/dev/null
else
exit 
fi

P4=$(find /opt/ -name "apr-[0-9].[0-9]*")
P5=$(find /opt/ -name "apr-util-[0-9].[0-9]*")
P6=$(find /opt/ -name "httpd-[0-9].[0-9]*")
mv $P4 $P6/srclib/apr
mv $P5 $P6/srclib/apr-util 

##################
echo "正在安装环境"
yum -y install \
gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl >/dev/null

cd $P6

echo "配置Apache"
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi

echo "###编译及安装###" 
make && make install  


ln -s /usr/local/httpd/conf/httpd.conf /etc/
ln -s /usr/local/httpd/bin/* /usr/local/bin/

echo "
[Unit]
Description=The Apache HTTP Server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart= /usr/local/bin/apachectl $OPTIONS
ExecrReload= /bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target" >/lib/systemd/system/httpd.service

systemctl start httpd.service
systemctl enable httpd.service
systemctl is-enabled httpd.service

2.安装MySQL

这里使用的是mysql5.6版本安装

[root@localhost ~]# vi mysql.sh
#!/bin/bash
yum -y install \
ncurses \
ncurses-devel \
bison \
gcc \
gcc-c++ \
expect \
cmake
yum install -y ncurses-devel autoconf

P1=$(find / -name "mysql-[0-9]*.gz")
read -p "核对软件名称$P1是否正确(yes|no):" T

if [ $T = yes ]
then
tar zvxf $P1 -C /opt
else
exit
fi

P2=$(find /opt/ -name mysql-[0-9].*[0-9])
cd $P2

cmake  \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DSYSCONFIDIR=/etc \
-DMYSQL_DATADIR=/home/mysql/ \
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock

make && make install

cp $P2/support-files/my-default.cnf /etc/my.cnf

cp $P2/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld       
chkconfig --add /etc/init.d/mysqld
chkconfig  mysqld --level 235 on

echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
echo $PATH

useradd -s /sbin/nologin mysql
chown -R mysql:mysql /usr/local/mysql/

/usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--ldata=/var/lib/mysql \
--basedir=/usr/local/mysql \
--datadir=/home/mysql

ln -s /var/lib/mysql/mysql.sock  /home/mysql/mysql.sock

sed -ir '46s/$/\/usr\/local\/mysql/' /etc/init.d/mysqld
sed -ir '47s/$/\home\/mysql/' /etc/init.d/mysqld

service mysqld start

STA=$(netstat -anpt | grep 3306 |wc -l)
if [[ $STA -ge 1 ]]
then
echo "mysql启动正常"
else
echo "mysql启动失败"
fi

/usr/bin/expect <<EOF
spawn /usr/local/mysql/bin/mysqladmin -uroot -p password
expect { 
"Enter" { send "\r";exp_continue}
"password" { send "abc123\r";exp_continue}
"password" { send "abc123\r"}
}
expect eof
EOF

echo "安装完成,请执行 source /etc/profile 命令,完成优化。

3.安装PHP

PHP使用的是5.6版本

[root@localhost ~]# vi php.sh
#!/bin/bash

P1=$(find / -name php*.bz2)

read -p "您的PHP源码包名是否为$P1(yes|no)" PAN

if [ $PAN = yes ]
then
echo "正在解压PHP源码包"
 tar jvxf $P1 -C /opt >/dev/null
else
exit
fi

yum -y install \
gd \
libpng \
libpng-devel \
pcre \
pcre-devel \
libxml2-devel \
libjpeg-devel

P2=$(find / -name "php-[0-9].[0-9].[0-9][0-9]")
cd $P2

./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 

make -j3 && make install

cp $P2/php.ini-development /usr/local/php5/php.ini
ln -s /usr/local/php5/bin/* /usr/local/bin/
ln -s /usr/local/php5/sbin/* /usr/local/sbin/

sed -i '393aAddType application/x-httpd-php\ .php\nAddType application/x-httpd-php-source\ .phps' /usr/local/httpd/conf/httpd.conf
sed -i -r '/DirectoryIndex index.html/s/$/ php.html/' /usr/local/httpd/conf/httpd.conf

echo "<?php
phpinfo();
?> " >/usr/local/httpd/htdocs/index.php

systemctl restart httpd
service httpd restart

4.测试mysql的连通性

[root@localhost ~]# mysql -u root -p   ##进入数据库授权
mysql> CREATE DATABASE sky;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT all ON sky.* TO 'skyuser'@'%' IDENTIFIED BY 'admin123';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> \q
[root@localhost htdocs]# vi index.php 
<?php
$link=mysqli_connect('192.168.10.20','skyuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>
[root@localhost htdocs]# systemctl restart httpd

5.安装memcache客户端工具

[root@localhost ~]# yum -y install autoconf 
[root@localhost ~]# ls
 ……省略部分
     memcache-2.2.7.tgz    
[root@localhost ~]# tar zxvf memcache-2.2.7.tgz -C /opt
[root@localhost ~]# cd /opt/memcache-2.2.7/
[root@localhost memcache-2.2.7]# /usr/local/php5/bin/phpize  ##增加PHP模块后生成的对memcache配置的脚本(configure文件)
Configuring for:
PHP Api Version:         20160303
Zend Module Api No:      20160303
Zend Extension Api No:   320160303
[root@localhost memcache-2.2.7]# ./configure \
> --enable-memcache \
> --with-php-config=/usr/local/php5/bin/php-config

……省略部分
creating libtool
appending configuration tag "CXX" to libtool
configure: creating ./config.status
config.status: creating config.h    ##这里提示创建了config.h文件,PHP7.0以上版本可能出现不兼容,文件创建会失败,最好用5.0版本
[root@localhost memcache-2.2.7]# make && make install
…………省略部分
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
Build complete.
Don't forget to run 'make test'.
Installing shared extensions:     /usr/local/php5/lib/php/extensions/no-debug-zts-20131226/
## 编译安装完成后,会提示生成一个共享扩展文件目录,这里需要将这个目录路径记录下来,需要放入配置文件中
[root@localhost ~]# vi /usr/local/php5/php.ini
738//  extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-zts-20131226/"   ##填写刚刚记录下的路径,找个合适位置插入这两行配置
739//  extension = memcache.so   ##加载扩展模块,memcache
[root@localhost htdocs]# vim /usr/local/httpd/htdocs/index.php    ##编写测试网页
<?php
$memcache = new Memcache() ;
$memcache->connect('192.168.10.10',11211);     ##指向memcache服务器ip和端口
$memcache->set('key','Memcache test Successfull!',0,60);
$result = $memcache->get('key')
unset($memcache);
echo $result;
?>
[root@localhost ~]# systemctl restart httpd

访问http://192.168.10.20/index.php

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服