Memcached-- cache database installation and management of database operations

A, Memcached Introduction:

(1 Introduction:

Memcached is a high-performance distributed memory object caching system for dynamic Web applications to reduce database load. It is to reduce the number of cache data read from the database by the object in memory and to improve the speed of the dynamic database-driven site. Memcached based on a store key / value pairs hashmap. Its daemon (daemon) is written in C, but the client can be written in any language, and by agreement with the memcached daemon communication.

(2) Features:

memcached distributed cache server as a high-speed operation, has the following characteristics:

1, a simple protocol;
2, based on the event processing libevent;
3, internal memory storage;
. 4, the memcached distributed not communicate with each other.

(3) Storage:

To improve performance, the data stored in memcached memcached are stored in the built-in memory storage space. Since the data exists only in memory, thus restart memcached, restart the operating system will cause all data disappear. Further, the content capacity after reaching the predetermined value, it is automatically deleted without the use of the cache based on LRU (Least Recently Used) algorithm. memcached server to cache itself is designed, and therefore did not give much thought to the issue of permanent data.

Two, memcached database configuration:

1, ready to install the required Source Package

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

2, compile and install memcached

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

3, open memcached

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

4, memcached database Basic Operation

[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                      ##清空统计数据

Third, the client configuration (deployment LAMP architecture)

Before the LAMP architecture blog wrote, I want to see a detailed explanation can look at. The following do not explain.
LNMP architecture

1, the deployment of LAMP architecture

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

2, test access, LAMP architecture build success

Memcached-- cache database installation and management of database operations

3, modify the index.php file

[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();
?>

4, test database is working properly

[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> 

5, visit the page again, showing success means success

Memcached-- cache database installation and management of database operations

6, install Memcache client

[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   ##编译安装

7, configure PHP, Memcached add components

[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

8, modify the index.php file, and then restart the httpd service

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

9, the client detects whether the server can be connected to normal

Memcached-- cache database installation and management of database operations

Guess you like

Origin blog.51cto.com/14449541/2461114