Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它经过在内存中缓存数据和对象来减小读取数据库的次数,从而提升动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,可是客户端能够用任何语言来编写,并经过memcached协议与守护进程通讯。php
一、协议简单;
二、基于libevent的事件处理;
三、内置内存存储方式;
四、memcached不互相通讯的分布式。html
为了提升性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。因为数据仅存在于内存中,所以重启memcached、重启操做系统会致使所有数据消失。另外,内容容量达到指定值以后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached自己是为缓存而设计的服务器,所以并无过多考虑数据的永久性问题。mysql
[root@localhost ~]# mkdir /mnt/tools [root@localhost ~]# mount.cifs //192.168.100.100/tools /mnt/tools/ ##挂载 Password for root@//192.168.100.100/tools: [root@localhost ~]# cd /mnt/tools/memcached/ [root@localhost memcached]# ls LAMP-php5.6 magent-0.5.tar.gz memcached-1.5.6.tar.gz libevent-2.1.8-stable.tar.gz memcache-2.2.7.tgz [root@localhost memcached]# [root@localhost memcached]# tar xf libevent-2.1.8-stable.tar.gz -C /opt/ ##解压 [root@localhost memcached]# tar xf memcached-1.5.6.tar.gz -C /opt/ ##解压 [root@localhost memcached]# cd /opt/ [root@localhost opt]# ls libevent-2.1.8-stable memcached-1.5.6 rh [root@localhost opt]#
[root@localhost opt]# yum install gcc gcc-c++ make -y ##安装依赖环境包 .............//省略过程 [root@localhost libevent-2.1.8-stable]# ./configure --prefix=/usr/local/libevent ##配置libevent .............//省略过程 [root@localhost libevent-2.1.8-stable]# make && make install ##编译安装libevent .............//省略过程 [root@localhost libevent-2.1.8-stable]# cd ../memcached-1.5.6/ [root@localhost memcached-1.5.6]# ./configure \ ##配置memcached > --prefix=/usr/local/memcached \ > --with-libevent=/usr/local/libevent/ .............//省略过程 [root@localhost memcached-1.5.6]# make && make install ##编译安装memcached .............//省略过程 [root@localhost memcached-1.5.6]# ln -s /usr/local/memcached/bin/* /usr/local/bin ##便于系统识别 [root@localhost memcached-1.5.6]#
[root@localhost memcached-1.5.6]# memcached -d -m 32m -p 11211 -u root ##开启数据库服务,-d守护进程 ;-m缓存大小32M ;-p端口11211 [root@localhost memcached-1.5.6]# [root@localhost memcached-1.5.6]# netstat -ntap | grep memcached ##查看端口 tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 22448/memcached tcp6 0 0 :::11211 :::* LISTEN 22448/memcached [root@localhost memcached-1.5.6]# [root@localhost memcached-1.5.6]# systemctl stop firewalld.service ##关闭防火墙 [root@localhost memcached-1.5.6]# setenforce 0 ##关闭加强型安全功能 [root@localhost memcached-1.5.6]#
[root@localhost memcached-1.5.6]# yum install -y telnet ##安装Telnet服务 .............//省略过程 [root@localhost memcached-1.5.6]# telnet 127.0.0.1 11211 ##链接memcached数据库 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. add username 0 0 7 添加数据(两个0表示:不进行压缩和序列化标识,数据过时时间为永不过时;标识号是7就须要输入7位数。) 1234567 ##输入7位的值 STORED ##添加成功 add users 0 0 7 123 ##输入错误的值 ERROR ##添加失败 get username VALUE username 0 7 1234567 END gets username ##查询数据 VALUE username 0 7 1 1234567 END set username 0 0 8 ##更新信息,若键名不存在,则自行添加 12345678 STORED gets username ##查询数据 VALUE username 0 8 3 12345678 END replace school 0 0 2 ##更新信息,若键名不存在,则报错 un NOT_STORED get shcool ##查询数据 END replace username 0 0 9 ##更新信息,若键名不存在,则报错 123456789 STORED gets username ##查询数据 VALUE username 0 9 4 123456789 END set school 0 0 4 ##更新信息,若键名不存在,则自行添加 1234 STORED gets school ##查询数据 VALUE school 0 4 5 1234 END cas school 0 0 7 5 ##修改键的存储位数 logging STORED gets school VALUE school 0 7 6 logging END cas school 0 0 8 2 loggings EXISTS append school 0 0 4 ##键值后追加数据 book STORED gets school VALUE school 0 11 7 loggingbook END prepend school 0 0 2 ##键值前追加数据 un STORED gets school VALUE school 0 13 8 unloggingbook END delete school ##清除指定的键值数据,清除全部缓存数据为flush_all DELETED get school END quit ##退出 Connection closed by foreign host. [root@localhost memcached-1.5.6]# ##查看命令: stats ##显示状态信息 stats items ##返回全部键值对的统计信息 stats cachedump 1 0 ##返回指定存储空间的键值对 stats slabs ##显示各个slab的信息 stats sizes ##输出全部item的大小和个数 stats reset ##清空统计数据
3、客户端配置(部署LAMP架构)c++
LAMP架构以前的博客写过,想看详细解释的能够,看一下。下面就不作解释了。
LNMP架构算法
一、部署LAMP架构sql
[root@localhost ~]# mkdir /mnt/tools [root@localhost ~]# mount.cifs //192.168.100.100/tools /mnt/tools/ Password for root@//192.168.100.100/tools: [root@localhost ~]# cd /mnt/tools/memcached/ [root@localhost memcached]# ls LAMP-php5.6 libevent-2.1.8-stable.tar.gz magent-0.5.tar.gz memcache-2.2.7.tgz memcached-1.5.6.tar.gz [root@localhost LAMP-php5.6]# ls apr-1.6.2.tar.gz httpd-2.4.29.tar.bz2 mysql-5.6.26.tar.gz apr-util-1.6.0.tar.gz LAMP-php5.6.txt php-5.6.11.tar.bz2 [root@localhost LAMP-php5.6]# [root@localhost LAMP-php5.6]# tar xf apr-1.6.2.tar.gz -C /opt/ [root@localhost LAMP-php5.6]# tar xf apr-util-1.6.0.tar.gz -C /opt/ [root@localhost LAMP-php5.6]# tar xf httpd-2.4.29.tar.bz2 -C /opt/ [root@localhost LAMP-php5.6]# [root@localhost LAMP-php5.6]# cd /opt/ [root@localhost opt]# ls apr-1.6.2 apr-util-1.6.0 httpd-2.4.29 rh [root@localhost opt]# mv apr-1.6.2/ httpd-2.4.29/srclib/apr [root@localhost opt]# mv apr-util-1.6.0/ httpd-2.4.29/srclib/apr-util [root@localhost opt]# ls httpd-2.4.29 rh [root@localhost opt]# [root@localhost opt]# cd httpd-2.4.29/ [root@localhost httpd-2.4.29]# yum -y install \ > gcc \ > gcc-c++ \ > make \ > pcre-devel \ > expat-devel \ > perl \ > zlib-devel [root@localhost httpd-2.4.29]# ./configure \ > --prefix=/usr/local/httpd \ > --enable-so \ > --enable-rewrite \ > --enable-charset-lite \ > --enable-cgi [root@localhost httpd-2.4.29]# make && make install [root@localhost httpd-2.4.29]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd [root@localhost httpd-2.4.29]# vim /etc/init.d/httpd # chkconfig: 35 85 21 //35级别自动运行 第85个启动 第21个关闭 # description: Apache is a World Wide Web server [root@localhost httpd-2.4.29]# chkconfig --add httpd [root@localhost httpd-2.4.29]# [root@localhost httpd-2.4.29]# vim /usr/local/httpd/conf/httpd.conf ServerName www.yun.com:80 Listen 192.168.52.132:80 #Listen 80 [root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/ [root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/bin/* /usr/local/bin/ [root@localhost httpd-2.4.29]# apachectl -t Syntax OK [root@localhost httpd-2.4.29]# [root@localhost httpd-2.4.29]# service httpd start [root@localhost httpd-2.4.29]# netstat -ntap | grep 80 tcp 0 0 192.168.52.132:80 0.0.0.0:* LISTEN 88064/httpd [root@localhost httpd-2.4.29]# [root@localhost httpd-2.4.29]# cd /mnt/tools/memcached/LAMP-php5.6/ [root@localhost LAMP-php5.6]# ls apr-1.6.2.tar.gz httpd-2.4.29.tar.bz2 mysql-5.6.26.tar.gz apr-util-1.6.0.tar.gz LAMP-php5.6.txt php-5.6.11.tar.bz2 [root@localhost LAMP-php5.6]# tar xf mysql-5.6.26.tar.gz -C /opt/ [root@localhost LAMP-php5.6]# cd /opt/ [root@localhost opt]# ls httpd-2.4.29 mysql-5.6.26 rh [root@localhost opt]# cd mysql-5.6.26/ [root@localhost mysql-5.6.26]# yum install -y ncurses-devel autoconf cmake [root@localhost 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/ \ > -DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock [root@localhost mysql-5.6.26]# make && make install [root@localhost mysql-5.6.26]# cp support-files/my-default.cnf /etc/my.cnf cp:是否覆盖"/etc/my.cnf"? yes [root@localhost mysql-5.6.26]# cp support-files/mysql.server /etc/init.d/mysqld [root@localhost mysql-5.6.26]# chmod 755 /etc/init.d/mysqld [root@localhost mysql-5.6.26]# chkconfig --add /etc/init.d/mysqld [root@localhost mysql-5.6.26]# chkconfig mysqld --level 235 on [root@localhost mysql-5.6.26]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile [root@localhost mysql-5.6.26]# source /etc/profile [root@localhost mysql-5.6.26]# useradd -s /sbin/nologin mysql [root@localhost mysql-5.6.26]# chown -R mysql:mysql /usr/local/mysql/ [root@localhost mysql-5.6.26]# [root@localhost mysql-5.6.26]# /usr/local/mysql/scripts/mysql_install_db \ > --user=mysql \ > --ldata=/var/lib/mysql \ > --basedir=/usr/local/mysql \ > --datadir=/home/mysql [root@localhost mysql-5.6.26]# ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock [root@localhost mysql-5.6.26]# vim /etc/init.d/mysqld basedir=/usr/local/mysql datadir=/home/mysql [root@localhost mysql-5.6.26]# service mysqld start Starting MySQL. SUCCESS! [root@localhost mysql-5.6.26]# netstat -ntap | grep 3306 tcp6 0 0 :::3306 :::* LISTEN 103429/mysqld [root@localhost mysql-5.6.26]# [root@localhost mysql-5.6.26]# service mysqld start Starting MySQL. SUCCESS! [root@localhost mysql-5.6.26]# netstat -ntap | grep 3306 tcp6 0 0 :::3306 :::* LISTEN 103429/mysqld [root@localhost mysql-5.6.26]# [root@localhost mysql-5.6.26]# mysqladmin -u root -p password "abc123" Enter password: Warning: Using a password on the command line interface can be insecure. [root@localhost mysql-5.6.26]# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.6.26 Source distribution Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> \q Bye [root@localhost mysql-5.6.26]# [root@localhost mysql-5.6.26]# cd /mnt/tools/memcached/LAMP-php5.6/ [root@localhost LAMP-php5.6]# ls apr-1.6.2.tar.gz httpd-2.4.29.tar.bz2 mysql-5.6.26.tar.gz apr-util-1.6.0.tar.gz LAMP-php5.6.txt php-5.6.11.tar.bz2 [root@localhost LAMP-php5.6]# tar xf php-5.6.11.tar.bz2 -C /opt/ [root@localhost LAMP-php5.6]# cd /opt/ [root@localhost opt]# ls httpd-2.4.29 mysql-5.6.26 php-5.6.11 rh [root@localhost opt]# cd php-5.6.11/ [root@localhost php-5.6.11]# yum -y install \ > gd \ > libpng \ > libpng-devel \ > pcre \ > pcre-devel \ > libxml2-devel \ > libjpeg-devel [root@localhost 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@localhost php-5.6.11]# make && make install [root@localhost php-5.6.11]# cp php.ini-development /usr/local/php5/php.ini [root@localhost php-5.6.11]# ln -s /usr/local/php5/bin/* /usr/local/bin/ [root@localhost php-5.6.11]# ln -s /usr/local/php5/sbin/* /usr/local/sbin/ [root@localhost php-5.6.11]# [root@localhost php-5.6.11]# vim /etc/httpd.conf AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps <IfModule dir_module> DirectoryIndex index.html index.php </IfModule> [root@localhost php-5.6.11]# vim /usr/local/httpd/htdocs/index.php <?php phpinfo(); ?> [root@localhost php-5.6.11]# service httpd stop [root@localhost php-5.6.11]# service httpd start [root@localhost php-5.6.11]# systemctl stop firewalld.service [root@localhost php-5.6.11]# setenforce 0 [root@localhost php-5.6.11]#
[root@localhost php-5.6.11]# vim /usr/local/httpd/htdocs/index.php <?php $link=mysql_connect('192.168.52.132','skyuser','admin123'); if($link) echo "<h1>Success!!</h1>"; else echo "Fail!!"; mysql_close(); ?>
[root@localhost php-5.6.11]# mysql -u root -pabc123 ##进入数据库 Warning: Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 6 Server version: 5.6.26 Source distribution Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> create database sky; ##建立一个数据库为 sky Query OK, 1 row affected (0.00 sec) mysql> grant all on sky.* to 'skyuser'@'%' identified by 'admin123'; ##提权 Query OK, 0 rows affected (0.01 sec) mysql> flush privileges; ##刷新权限 Query OK, 0 rows affected (0.01 sec) mysql>
[root@localhost php-5.6.11]# cd /mnt/tools/memcached/ [root@localhost memcached]# ls LAMP-php5.6 libevent-2.1.8-stable.tar.gz magent-0.5.tar.gz memcache-2.2.7.tgz memcached-1.5.6.tar.gz [root@localhost memcached]# tar xf memcache-2.2.7.tgz -C /opt/ ##解压 [root@localhost memcached]# cd /opt/ [root@localhost opt]# ls httpd-2.4.29 memcache-2.2.7 mysql-5.6.26 package.xml php-5.6.11 rh [root@localhost opt]# [root@localhost opt]# cd memcache-2.2.7/ [root@localhost memcache-2.2.7]# /usr/local/php5/bin/phpize Configuring for: PHP Api Version: 20131106 Zend Module Api No: 20131226 Zend Extension Api No: 220131226 [root@localhost memcache-2.2.7]# [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 ##编译安装
[root@localhost memcache-2.2.7]# vim /usr/local/php5/php.ini extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-zts-20131226/" extension=memcache.so
[root@localhost memcache-2.2.7]# vim /usr/local/httpd/htdocs/index.php <?php $memcache = new Memcache(); $memcache->connect('192.168.52.149',11211); $memcache->set('key','Memcache test Successfull!',0,60); $result = $memcache->get('key'); unset($memcache); echo $result; ?> [root@localhost memcache-2.2.7]# service httpd stop [root@localhost memcache-2.2.7]# service httpd start [root@localhost memcache-2.2.7]#