Linux--memcached数据库搭建

memcached的定义

  • memcache是一套分布式的高速缓存系统,由LiveJournal的Bard Fitzpartrick开发,但目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站访问速度,提升效果十分显著。memcache是一套开放源代码软件,以BSD license授权发布的

memcached的工作方式

  • 工作流程:先检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作,如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份memcached中(memcache客户端不负责,需要程序明确实现);每次更新数据库的同时更新memcached中的数据,保持一致性;当分配给memcached内存空间用完之后,会使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效策略首先被替换,然后再替换掉最近未使用的数据

memcached的特点

  • memcached本质上是一个内存key-value缓存,它通过减轻数据库负载加速动态web应用。
  • memcached不支持数据的持久化,服务器关闭之后数据全部丢失。
  • memcached协议简单,使用的是基于文本行的协议。
  • memcached是多线程工作,redis是单线程工作,各个memcached服务器之间互不通信,各自独立存取数据,不共享任何信息
  • memcached服务器不具有分布式功能,分布式部署取决于memcache客户端
  • memcached用lazy expiration(懒淘汰)实现key过期
  • memcached通过提前分配内存保证运行性能,很少出现内存碎片
  • memcached使用非阻塞IO服用网络模型,目的是提高数据吞吐量
  • memecached使用listen/work的多线程模型,优点是能够充分利用多核,但是会带来一些锁冲突

memcached的使用场景

  • 数据查询缓存:将数据库的数据加载到memcached,提供程序的访问速度
  • 计数器的场景:通过incr/decr命令实现评论数量、点击数统计、操作次数等场景
  • 乐观锁实现:例如计划任务多实例部署的场景,通过CAS实现不重复执行
  • 防重复处理命令:CAS命令

部署memcached

  • 实验搭建客户端与服务端,客户端可以连接到服务终端
角色 IP地址 系统 软件包
服务端 192.168.179.231 Centos7

memcached-1.5.6.tar.gz

libevent-2.1.8-stable.tar.gz

客户端 192.168.179.132 Centos7

apr-1.6.2.tar.gz

apr-util-1.6.0.tar.gz

httpd-2.4.29.tar.bz2

mysql-5.6.26.tar.gz

php-5.6.11.tar.bz2

安装memcached,安装时要先安装libevent,然后安装memcached数据库

//解压缩包
tar zxf memcached-1.5.6.tar.gz -C /opt/
tar zxf libevent-2.1.8-stable.tar.gz -C /opt/

//安装环境依赖包
yum install gcc gcc-c++ make -y

//手工编译安装
cd /opt/libevent-2.1.8-stable
./configure --prefix=/usr/local/libevent
make && make install

cd /opt/memcached-1.5.6
./configure \
--prefix=/usr/local/memcached \
--with-libevent=/usr/local/libevent
make && make install

//方便管理
ln -s /usr/local/memcached/bin/* /usr/local/bin

//开启服务
memcached -d -m 32m -p 11211 -u root

//检查服务是否开启
netstat -ntap | grep 11211

//关闭防火墙
systemctl stop firewalld.service 
setenforce 0

//登录服务器
yum install telnet -y
telnet 127.0.0.1 11211

//添加内容
add username 0 0 7
1234567

//查看值
get username

  • 更新值
//更新值
set username 0 0 8 
12345678

append username 0 0 7  //键值后追加数据
example
STORED

prepend username 0 0 2 //键值前追加数据

status //显示状态信息

flush_all  //清除所有缓存数据

安装客户端,客户端需要安装LAMP架构

------------安装Apache--------
tar zvxf apr-1.6.2.tar.gz -C /opt
tar zvxf apr-util-1.6.0.tar.gz -C /opt
tar jxvf httpd-2.4.29.tar.bz2 -C /opt/

cd /opt
mv apr-1.6.2/ httpd-2.4.29/srclib/apr
mv apr-util-1.6.0/ httpd-2.4.29/srclib/apr-util


yum -y install \
gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel 

cd httpd-2.4.29

./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi

make && make install

cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
vim /etc/init.d/httpd

# chkconfig: 35 85 21  //35级别自动运行  第85个启动 第21个关闭
# description: Apache is a World Wide Web server

chkconfig --add httpd //将httpd加入到SERVICE管理器

vim /usr/local/httpd/conf/httpd.conf
ServerName 
Listen

ln -s /usr/local/httpd/conf/httpd.conf /etc/
ln -s /usr/local/httpd/bin/* /usr/local/bin/

systemctl stop firewalld.service
setenforce 0

httpd -t 
apachectl -t

service httpd start
netstat -anpt | grep 80


--------------以下是安装MYSQL-----

yum install -y ncurses-devel autoconf cmake gcc gcc-c++


tar xzvf mysql-5.6.26.tar.gz
cd 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

make && make install

cp support-files/my-default.cnf /etc/my.cnf

cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld       
chkconfig --add /etc/init.d/mysqld
chkconfig  mysqld --level 35 on

echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
echo $PATH

useradd -s /sbin/nologin mysql
chown -R mysql:mysql /usr/local/mysql/

/usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--ldata=/var/lib/mysql \
--basedir=/usr/local/mysql \
--datadir=/home/mysql

ln -s /var/lib/mysql/mysql.sock  /home/mysql/mysql.sock

vim  /etc/init.d/mysqld
basedir=/usr/local/mysql     
datadir=/home/mysql

service mysqld start
netstat -anpt | grep 3306

mysqladmin -u root -p password    //给root账号设置密码
mysql -u root -p

---------以下安装PHP-------
yum -y install \
gd \
libpng \
libpng-devel \
pcre \
pcre-devel \
libxml2-devel \
libjpeg-devel

tar xjvf php-5.6.11.tar.bz2
cd php-5.6.11

//gd图片库
//zlib支持压缩
//mbstring支持字符串
// /usr/local/mysql php的配置文件
//--with-apxs2,设置

./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 

make && make install

//生成主配置文件php.ini
cp php.ini-development /usr/local/php5/php.ini
ln -s /usr/local/php5/bin/* /usr/local/bin/
ln -s /usr/local/php5/sbin/* /usr/local/sbin/

vim /etc/httpd.conf 

//支持php和php源码文件
AddType application/x-httpd-php .php                 //392
AddType application/x-httpd-php-source .phps    //392
DirectoryIndex index.php index.html  /256

//创建PHP首页,使Apache服务识别
vim /usr/local/httpd/htdocs/index.php
<?php
phpinfo();
?>

在网页测试“http://192.168.179.132/index.php”

下面测试数据库工作是否正常

mysql -u root -p

CREATE DATABASE sky;
GRANT all ON sky.* TO 'skyuser'@'%' IDENTIFIED BY 'admin123';
flush privileges; 

<?php
$link=mysql_connect('192.168.80.193','skyuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
mysql_close();
?>

安装服务端的memcache

tar zxvf memcache-2.2.7.tgz -C /opt/

cd /opt/memcache-2.2.7

/usr/local/php5/bin/phpize          //增加为PHP的模块后在对memcache进行配置

./configure \
--enable-memcache \
--with-php-config=/usr/local/php5/bin/php-config

make && make install

/usr/local/php5/lib/php/extensions/no-debug-zts-20131226/   //是否存在

vim /usr/local/php5/php.ini

extension_dir="/usr/local/php5/lib/php/extensions/no-debug-zts-20131226/"
extension = memcache.so

//在客户端检查服务端是否可以连接

vim /usr/local/httpd/htdocs/index.php

<?php
$memcache = new Memcache ();
$memcache->connect('192.168.179.132',11211);
$memcache->set('key','Memcache test Successfull!',0,60);
$result = $memcache->get('key');
unset($memcache);
echo $result;
?>

//重启服务
service httpd restart

访问 192.168.179.132/index.php
发布了78 篇原创文章 · 获赞 5 · 访问量 2569

猜你喜欢

转载自blog.csdn.net/qq397750142/article/details/104248299
今日推荐