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]#