文章目录
前言
- memcache是非关系型数据库,它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。
- 为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中,且重启就会消失。
- 所以memcache又称为内存/缓存数据库,特点是存储高热数据库,速度快。
一:环境
1.1:环境介绍
- VMware软件
- 一台centos7作为memcache服务端,IP地址:192.168.79.133
- 一台centos7作为memcache客户端,IP地址:192.168.79.134
1.2:实验目的
- 搭建memcache服务端和客户端,通过访问客户端来确定服务端的连接是否正常
- 工作原理是:
- Memcached有两个核心组件组成:服务器端(server)和客户端(client)。
- 在一个memcached的查询中,client先通过计算key的hash值来确定kv对所处在的server位置。
- 当server确定后,客户端就会发送一个查询请求给对应的server,让它来查找确切的数据。
- 因为这之间没有交互以及多播协议,所以memcached交互带给网络的影响是最小化的
二:搭建memcache服务器(server)
-
挂载宿主机,使用memcache源码包
-
[root@server ~]# mount.cifs //192.168.23.1/ccc /mnt '//挂载宿主机目录' Password for root@//192.168.23.1/ccc: [root@server ~]# cd /mnt/memcache/ [root@server memcache]# tar zxvf libevent-2.1.8-stable.tar.gz -C /opt '//解压事件库' [root@server memcache]# tar zxvf memcached-1.5.6.tar.gz -C /opt '//解压源码包' [root@server memcache]# cd /opt [root@server opt]# ls libevent-2.1.8-stable memcached-1.5.6 rh
-
编译安装memcache和事件库
-
[root@server opt]# yum install gcc gcc-c++ make -y '//安装编译器' [root@server opt]# cd libevent-2.1.8-stable/ [root@server libevent-2.1.8-stable]# ./configure --prefix=/usr/local/libevent '//指定libevent目录' [root@server libevent-2.1.8-stable]# make && make install [root@server libevent-2.1.8-stable]# cd ../memcached-1.5.6/ [root@server memcached-1.5.6]# ./configure \ > --prefix=/usr/local/memcached \ '//指定memcache路径 > --with-libevent=/usr/local/libevent '//关联libevent事件库' [root@server memcached-1.5.6]# make && make install
-
memcache的一些优化操作
-
[root@server memcached-1.5.6]# ln -s /usr/local/memcached/bin/* /usr/local/bin/ '//建立memcache命令软连接' [root@server memcached-1.5.6]# memcached -d -m 32m -p 11211 -u root '//-d守护进程 ;-m缓存大小32M ;-p端口11211;-u:指定用户登录' [root@server memcached-1.5.6]# netstat -ntap |grep memcache '//检查是否开启成功' tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 41801/memcached tcp6 0 0 :::11211 :::* LISTEN 41801/memcached [root@server memcached-1.5.6]# systemctl stop firewalld.service '//关闭防火墙' [root@server memcached-1.5.6]# setenforce 0
-
memcache测试
-
[root@server memcached-1.5.6]# yum install telnet -y '//安装Telnet软件' [root@server memcached-1.5.6]# telnet 127.0.0.1 11211 '//使用telnet连接memcache' Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'.
2.1:memcache数据库基本操作
-
'//“set”表示按照相应的<key>存储该数据,没有的时候增加,有的覆盖。' '//“add”表示按照相应的<key>添加该数据,但是如果该<key>已经存在则会操作失败。' '//“replace”表示按照相应的<key>替换数据,但是如果该<key>不存在则操作失败' '//cas,检查更新,更新因子需要相等,' '//append,键值后追加数据' '//prepend,键值前追加数据' '//delete,删除' '//flush_all,清楚所有缓存数据' [root@server memcached-1.5.6]# telnet 127.0.0.1 11211 '//使用telnet连接memcache' Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. add username 0 0 5 '//0:不使用序列号,0:用过期,5:指定字节长度' 12345 '//字节长度不为5则会报错' STORED get username '//查看' VALUE username 0 5 12345 END gets username '//查看' VALUE username 0 5 1 '//1:更新因子,每次更新+1' 12345 END replace username 0 0 2 12 STORED gets username VALUE username 0 2 2 12 END cas username 0 0 5 2 '//更新因子需要相同' 12345 STORED get username VALUE username 0 5 12345 END append username 0 0 3 '//username后追加三个字节' abc STORED get username VALUE username 0 8 12345abc END prepend username 0 0 3 '//username前追加三个字节' abc STORED get username VALUE username 0 11 abc12345abc END delete username '//删除username' DELETED get username END quit Connection closed by foreign host. [root@server memcached-1.5.6]#
三:搭建memcache客户端(client)
3.1:首先要搭建LAMP架构
3.2:搭建memcache客户端
-
[root@client ~]# cd /mnt/memcache [root@client memcache]# tar zxvf memcache-2.2.7.tgz -C /opt [root@client memcache]# cd /opt/memcache-2.2.7/ [root@client memcache-2.2.7]# /usr/local/php5/bin/phpize '//生成memcache配置文件' [root@client memcache-2.2.7]# ./configure \ > --enable-memcache \ '//开启memcache' > --with-php-config=/usr/local/php5/bin/php-config '//关联php配置文件' [root@client memcache-2.2.7]# make && make install Installing shared extensions: /usr/local/php5/lib/php/extensions/no-debug-zts-20131226/ '//共享文件位置,后面要用' [root@client memcache-2.2.7]# vim /usr/local/php5/php.ini ...省略内容 '//搜索extension_dir' ; Directory in which the loadable extensions (modules) reside. ; http://php.net/extension-dir ; extension_dir = "./" ; On windows: ; extension_dir = "ext" '//在下方插入两段内容' extension_dir =usr/local/php5/lib/php/extensions/no-debug-zts-20131226/ '//指向共享文件位置' extension = memcache.so '//指向memcache模块' ...省略内容
四:测试服务端
4.1:用客户端检测服务端是否正常连接
-
[root@client memcache-2.2.7]# vim /usr/local/httpd/htdocs/index.php <?php $memcache=new Memcache(); $memcache->connect('192.168.79.133',11211); '//连接Memcached服务器地址' $memcache->set('key','Memcache test Successfull!',0,60); $result=$memcache->get('key'); unset($memcache); echo$result; ?> [root@client memcache-2.2.7]# service httpd stop [root@client memcache-2.2.7]# service httpd start
-
浏览器访问192.168.79.134/index.php