设为首页 收藏本站
查看: 970|回复: 0

[经验分享] LAMP搭建Memcached高速缓存服务

[复制链接]

尚未签到

发表于 2018-12-25 10:51:55 | 显示全部楼层 |阅读模式
   memcached与memcache
  

        Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。
  它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。
  Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以
  用任何语言来编写,并通过memcached协议与守护进程通信。

  memcached作为高速运行的分布式缓存服务器,具有以下的特点。
  ● 协议简单
  ● 基于libevent的事件处理
  ● 内置内存存储方式
  ● memcached不互相通信的分布式
  MemCache的工作流程如下:先检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作;
  如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中(memcached客户端不负责,需要程序明确实现);每次更新数据库的同时更新memcached中的数据,保证一致性;当分配给memcached内存空间用完之后,会使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据。

  实验环境
操作系统ip地址服务名称
Centos7192.168.60.144/24memcached
Centos7192.168.60.143/24LAMP架构、memcache
win7192.168.60.133/24client测试机
  实验所用软件包
  memcached和memcache:链接:https://pan.baidu.com/s/1LdC8b_aieCenVQIWcg-vsA 密码:f9ax
  LAMP架构:链接:https://pan.baidu.com/s/18y2cSZe8limO462UCZuXCw 密码:lul9
   memcache服务端搭建
  1、安装编译环境,解压缩源码包
  yum install  gcc gcc-c++ make -y      #安装编译环境
  tar zxf memcached-1.5.6.tar.gz  -C /opt/      #解压memcached服务包
  tar zxf libevent-2.1.8-stable.tar.gz -C /opt/  #解压libevent事件库包
  2、编译libevent和memcached
  cd libevent-2.1.8-stable/
  ./configure --prefix=/usr/local/libevent       #编译安装路径即可
  make && make install
  cd  /opt/memcached-1.5.6/
  ./configuer --prefix=/usr/local/memcached \
  --with-libevent=/usr/local/libevent \      #这里要关联事件库的安装位置
  make && make install
  3、简单优化
  ln -s /usr/local/memcached/bin/* /usr/local/bin/     #建立memcached命令软链接
  4、开启memcached
  memcached -d -m 32m -p 11211 -u root     #等同于开启了memcached
  注:-d 指定守护进程 -m 指定缓存大小  -p 指定端口 -u 指定管理用户root
  netstat -ntap | grep mem   #查看端口

  5、登陆
  yum intall telnet -y     #因为登陆需要telnet插件,安装一下
  telnet 127.0.0.1 11211     #本地登陆使用127.0.0.1 指定端口11211

  6、memcached一些基本命令
  这里memcached的操作类似于数据库的操作,下面示例的usrname类似于数据库中的表
  ● add username 0 0 7   0不设置序列号,0不设置过期时间,7序列号字节长度
  ● get username  #查看,但是查看不到更新因子
  ● set username 0 0 8 更新(不存在的数值等同于add增加)
  ● gets username    #查看内容格式如下
  VALUE username 0 8 1    这个1是更新因子,每更新一次就增加一
  ● replace username 0 0 5 #更新已经存在的内容,不存在的无法保存
  ● cas username 0 0 5 3  #检测更新,末尾更新因子要相同,否则不更新,返回EXISTS
  ● append username 0 0 10   #在原本的数值后追加追加几个数值,只会追加不会更改原本数据
  ● prepend username 0 0 2   #在原本的数值前追加数值
  ● delete username   #删除
  ● flush_all   #清除所有缓存数据
  ● stats    #显示状态信息
  ● quit    #退出
  memcache客户端搭建
  客户端需要LAMP架构的支持,因此我们先配置LAMP架构

  一、安装Apache

  1、解压缩源码包
  tar zxf apr-1.6.2.tar.gz -C /opt/
  tar zxf apr-util-1.6.0.tar.gz -C /opt/
  tar xjf httpd-2.4.29.tar.bz2 -C /opt/
  2、移动apr包,编译时需要
  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
  3、安装编译环境包
  yum install gcc gcc-c++ cmake pcre-devel expat-devel perl -y
  4、编译
  ./configure \
  --prefix=/usr/local/httpd \
  --enable-so --enable-rewrite \
  --enable-charset-lite \
  --enable-cgi
  make && make install
  5、复制启动脚本,建立配置文件、命令文件软链接
  cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
  ln -s /usr/local/httpd/conf/httpd.conf /etc/
  ln -s /usr/local/httpd/bin/*  /usr/local/bin/
  6、修改启动脚本文件和配置文件

  vim /etc/init.d/httpd      #修改启动脚本
  #chkconfig: 35 85 21
  #description: Apache is a World Wide Web server

  vim  /etc/httpd.conf     #修改配置文件
  ServerName www.example.com:80      #去掉注释
  Listen 192.168.60.143:80                      #监听本机地址
  #Listen 80                                             #注释掉IPV6的监听
  7、开启服务,检查端口
  service httpd start
  netstat -ntap | grep 80
  二、安装mysql5.6
  1、解压缩
  tar zxf mysql-5.6.26.tar.gz -C /opt/
  2、安装编译环境
  yum install ncurses-devel autoconf -y
  3、编译

  cd /opt/mysql-5.6.26     #编译参数如下
  cmake  \
  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
  -DDEFAULT_CHARSET=utf8 \
  -DDEFAULT_COLLATION=utf8_general_ci \
  -DWITH_EXTRA_CHARSETS=all \
  -DSYSCONFDIR=/etc \
  -DMYSQL_DATADIR=/home/mysql/ \
  -DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock \
  -DWITH_MYISAM_STORAGE_ENGINE=1 \
  -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
  -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
  -DENABLED_LOCAL_INFILE=1 \
  -DWITH_SSL=system \
  -DMYSQL_TCP_PORT=3306 \
  -DENABLE_DOWNLOADS=1 \
  -DWITH_SSL=bundled
  make && make install       #这个时间较长
  4、复制配置文件
  cp support-files/my-default.cnf  /etc/my.cnf
  5、复制启动脚本,添加至启动项
  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
  6、添加环境变量
  echo "PATH=$PATH:/usr/local/mysql/bin" >>/etc/profile
  source /etc/profile   #刷新环境变量,即时生效
  7、创建管理用户,指定mysql目录管理用户
  Useradd -s /sbin/nologin mysql
  chmod -R mysql:mysql /usr/local/mysql/
  8、初始化数据库
  /usr/local/mysql/scripts/mysql_install_db \
  --user=mysql \
  --ldata=/var/lib/mysql \
  --basedir=/usr/local/mysql \
  --datadir=/home/mysql
  9、建立sock文件软链接
  ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock
  10、修改启动脚本

  vim /etc/init.d/mysql     #找到basedir和datadir进行添加
  basedir=/usr/local/mysql
  datadir=/home/mysql
  11、启动mysql,添加mysql密码
  service mysql start      #启动mysql
  netstat -ntap | grep 3306
  mysqladmin -u root -p password "123123"    #设置密码
  三、安装php
  1、下载环境包

  yum install gd libpng libpng-devel pcre pcre-devel libxml2-devel libjpeg-devel -y
  2、解压缩、编译

  tar zxf php-5.6.11.tar.gz -C /opt/
  cd /opt/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
  make && make install

  3、优化

  cp php.ini-development /usr/local/php5/php.ini  #复制配置文件
  ln -s /usr/local/php5/bin/* /usr/local/bin              #将php中的命令建立软链接给系统识别
  in -s /usr/local/php5/sbin/* /usr/local/sbin
  4、修改httpd配置文件,让httpd支持php

  /AddType            #搜索AddType
  AddType application/x-gzip .gz .tgz       #在该行下插入,支持PHP
  AddType application/x-httpd-php .php
  AddType application/x-httpd-php-source .phps
  #修改httpd识别首页
  DirectoryIndex index.html index.php
  5、修改首页内容进行测试

  cd /usr/local/httpd/htdocs/
  mv index.html index.php
  vim index.php   #添加如下内容
  
  6、测试php首页
  在网页测试首页 http://192.168.60.136/index.php

  7、测试连接数据库

  mysql -u root -p 123123    #进入mysql
  CREATE DATABASE sky;     #创建数据库sky
  GRANT all ON sky.* TO 'skyuser'@'%' IDENTIFIED BY 'admin123';    #授权
  flush privileges;                 #刷新权限
  8、再次修改测试首页

  vim index.php            #这里是测试php能否连接mysql,能连接则返回Success!!
  
  9、网页测试能否连接数据库 http://192.168.60.143/index.php

  四、客户端安装memcache
  1、解压缩
  tar zxf memcache-2.2.7.tgz  -C /opt/
  2、生成配置脚本

  cd /opt/memcache-2.2.7/     #这时候里面没有configure的配置脚本
  /usr/local/php5/bin/phpize  #使用php生成配置脚本
  3、配置安装

  ./configure \
  --enable-memcache \
  --with-php-config=/usr/local/php5/bin/php-config       #指向php
  make && make install    #安装完成后会显示如下信息,保存
  Installing shared extensions:     /usr/local/php5/lib/php/extensions/no-debug-zts-20131226/
  4、修改php的配置文件

  vim /usr/local/php5/php.ini
  ; extension_dir = "./"         #模板
  ; On windows:                   #模板
  ; extension_dir = "ext"     #模板,搜索extension,添加如下两行
  extension_dir="/usr/local/php5/lib/php/extensions/no-debug-zts-20131226/"           #这是我们上一步保存的信息
  extension = memcache.so          #添加memcache.so模块
  5、再次修改httpd首页进行测试

  vim index.php    #修改首页,测试连接服务端memcached
  
  service httpd restart     #重启httpd服务
  6、网页再次测试首页,看能否连接memcached服务器






运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-655613-1-1.html 上篇帖子: memcached服务搭建及session共享 下篇帖子: 手把手让你实现开源企业级web高并发解决方案(lvs+heartbeat+varnish+nginx+eAccelerator+memcached)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表