Memcached-- 캐시 데이터베이스 설치 및 데이터베이스 작업의 관리

A, Memcached가 소개 :

(1) 소개 :

Memcached가 데이터베이스의 부하를 줄일 수있는 동적 웹 애플리케이션을위한 고성능 분산 메모리 오브젝트 캐싱 시스템입니다. 그것은 메모리에 객체가 데이터베이스에서 읽기 캐시 데이터의 수를 줄이고 동적 데이터베이스 기반 사이트의 속도를 개선하는 것입니다. 상점 키 / 값 쌍의 해시 맵을 기반으로 memcached를. (데몬) 그것의 데몬은 C로 작성되어 있지만, 클라이언트는 어떤 언어로 기록 될 수 있고, memcached를 데몬 통신과 합의에 의하여.

(2) 특징 :

고속 동작과 같은 memcached를 분산 캐시 서버는 다음과 같은 특징이 있습니다 :

1, 간단한 프로토콜,
(2), 이벤트 처리 libevent에 기초하여
3 내부 메모리 스토리지]
. (4), 분산되지 memcached를 서로 통신한다.

(3) 저장 :

성능을 향상시키기 위해 memcached를 memcached를에 저장된 데이터는 내장 메모리의 저장 공간에 저장됩니다. 데이터는 메모리에 존재하기 때문에, 다시 시작하여 memcached를 다시 시작 운영 시스템은 모든 데이터가 사라 원인이됩니다. 또한, 콘텐츠의 용량이 소정 값에 도달하면 자동 알고리즘 (최근 최소 사용) LRU에 기초하여 상기 캐시를 사용하지 않고 삭제된다. memcached와 서버는 영구적 인 데이터의 문제에 많은 생각을 포기하지 않았다 때문에 자체 설계 캐시하고 있습니다.

두, memcached를 데이터베이스 구성 :

1, 준비를 설치하는 데 필요한 소스 패키지

[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, 컴파일하고 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 개방되는 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를 데이터베이스 기본 조작

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

셋째, 클라이언트 구성 (배포 LAMP 아키텍처)

램프 아키텍처 블로그를 작성하기 전에, 내가 볼 수있는 자세한 설명을보고 싶어요. 다음은 설명하지 않습니다.
LNMP 아키텍처

1 LAMP 아키텍처 배포

[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, 테스트 액세스, LAMP 아키텍처 구축 성공

Memcached-- 캐시 데이터베이스 설치 및 데이터베이스 작업의 관리

3 index.php 파일을 수정

[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, 테스트 데이터베이스가 제대로 작동

[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, 성공 수단의 성공을 보여주는 페이지를 다시 방문

Memcached-- 캐시 데이터베이스 설치 및 데이터베이스 작업의 관리

6, Memcache의 클라이언트를 설치

[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, PHP를 구성, memcached를 추가 구성 요소

[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 index.php 파일을 수정 한 다음 httpd 서비스를 다시 시작

[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, 클라이언트는 서버가 정상으로 연결 할 수 있는지 여부를 감지

Memcached-- 캐시 데이터베이스 설치 및 데이터베이스 작업의 관리

추천

출처blog.51cto.com/14449541/2461114