如何搭建memcache(内存/缓存数据库)?和memcache数据库的基本操作

前言

  • memcache是非关系型数据库,它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。
  • 为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中,且重启就会消失。
  • 所以memcache又称为内存/缓存数据库,特点是存储高热数据库,速度快。

一:环境

1.1:环境介绍

  • VMware软件
  • 一台centos7作为memcache服务端,IP地址:192.168.79.133
  • 一台centos7作为memcache客户端,IP地址:192.168.79.134

1.2:实验目的

  • 搭建memcache服务端和客户端,通过访问客户端来确定服务端的连接是否正常
  • 工作原理是:
    • Memcached有两个核心组件组成:服务器端(server)和客户端(client)。
    • 在一个memcached的查询中,client先通过计算key的hash值来确定kv对所处在的server位置。
    • 当server确定后,客户端就会发送一个查询请求给对应的server,让它来查找确切的数据。
    • 因为这之间没有交互以及多播协议,所以memcached交互带给网络的影响是最小化的

二:搭建memcache服务器(server)

  • 挂载宿主机,使用memcache源码包

  • [root@server ~]# mount.cifs //192.168.23.1/ccc /mnt	'//挂载宿主机目录'
    Password for root@//192.168.23.1/ccc:  
    [root@server ~]# cd /mnt/memcache/
    [root@server memcache]# tar zxvf libevent-2.1.8-stable.tar.gz -C /opt	'//解压事件库'
    [root@server memcache]# tar zxvf memcached-1.5.6.tar.gz -C /opt	'//解压源码包'
    [root@server memcache]# cd /opt
    [root@server opt]# ls
    libevent-2.1.8-stable  memcached-1.5.6  rh
    
    
  • 编译安装memcache和事件库

  • [root@server opt]# yum install gcc gcc-c++ make -y	'//安装编译器'
    [root@server opt]# cd libevent-2.1.8-stable/
    [root@server libevent-2.1.8-stable]# ./configure --prefix=/usr/local/libevent	'//指定libevent目录'
    [root@server libevent-2.1.8-stable]# make && make install
    [root@server libevent-2.1.8-stable]# cd ../memcached-1.5.6/
    [root@server memcached-1.5.6]# ./configure \
    > --prefix=/usr/local/memcached \	'//指定memcache路径
    > --with-libevent=/usr/local/libevent	'//关联libevent事件库'
    [root@server memcached-1.5.6]# make && make install
    
    
  • memcache的一些优化操作

  • [root@server memcached-1.5.6]# ln -s /usr/local/memcached/bin/* /usr/local/bin/	'//建立memcache命令软连接'
    [root@server memcached-1.5.6]# memcached -d -m 32m -p 11211 -u root	'//-d守护进程 ;-m缓存大小32M ;-p端口11211;-u:指定用户登录'
    [root@server memcached-1.5.6]# netstat -ntap |grep memcache	'//检查是否开启成功'
    tcp        0      0 0.0.0.0:11211           0.0.0.0:*               LISTEN      41801/memcached     
    tcp6       0      0 :::11211                :::*                    LISTEN      41801/memcached     
    [root@server memcached-1.5.6]# systemctl stop firewalld.service 	'//关闭防火墙'
    [root@server memcached-1.5.6]# setenforce 0
    
    
  • memcache测试

  • [root@server memcached-1.5.6]# yum install telnet -y	'//安装Telnet软件'
    [root@server memcached-1.5.6]# telnet 127.0.0.1 11211	'//使用telnet连接memcache'
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    

2.1:memcache数据库基本操作

  • '//“set”表示按照相应的<key>存储该数据,没有的时候增加,有的覆盖。'
    '//“add”表示按照相应的<key>添加该数据,但是如果该<key>已经存在则会操作失败。'
    '//“replace”表示按照相应的<key>替换数据,但是如果该<key>不存在则操作失败'
    '//cas,检查更新,更新因子需要相等,'
    '//append,键值后追加数据'
    '//prepend,键值前追加数据'
    '//delete,删除'
    '//flush_all,清楚所有缓存数据'
    [root@server memcached-1.5.6]# telnet 127.0.0.1 11211	'//使用telnet连接memcache'
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    add username 0 0 5	'//0:不使用序列号,0:用过期,5:指定字节长度'
    12345	'//字节长度不为5则会报错'
    STORED
    get username	'//查看'
    VALUE username 0 5
    12345
    END
    gets username	'//查看'
    VALUE username 0 5 1	'//1:更新因子,每次更新+1'
    12345
    END
    replace username 0 0 2
    12
    STORED
    gets username
    VALUE username 0 2 2
    12
    END
    cas username 0 0 5 2   	'//更新因子需要相同'
    12345
    STORED
    get username
    VALUE username 0 5
    12345
    END
    append username 0 0 3	'//username后追加三个字节'
    abc
    STORED
    get username
    VALUE username 0 8
    12345abc
    END
    prepend username 0 0 3	'//username前追加三个字节'
    abc
    STORED
    get username
    VALUE username 0 11
    abc12345abc
    END
    delete username	'//删除username'
    DELETED
    get username
    END
    quit
    Connection closed by foreign host.
    [root@server memcached-1.5.6]# 
    

三:搭建memcache客户端(client)

3.1:首先要搭建LAMP架构

3.2:搭建memcache客户端

  • [root@client ~]# cd /mnt/memcache
    [root@client memcache]# tar zxvf memcache-2.2.7.tgz -C /opt
    [root@client memcache]# cd /opt/memcache-2.2.7/
    [root@client memcache-2.2.7]# /usr/local/php5/bin/phpize 	'//生成memcache配置文件'
    [root@client memcache-2.2.7]# ./configure \
    > --enable-memcache \	'//开启memcache'
    > --with-php-config=/usr/local/php5/bin/php-config	'//关联php配置文件'
    [root@client memcache-2.2.7]# make && make install
    Installing shared extensions:     /usr/local/php5/lib/php/extensions/no-debug-zts-20131226/	'//共享文件位置,后面要用'
    [root@client memcache-2.2.7]# vim /usr/local/php5/php.ini 
    ...省略内容
        '//搜索extension_dir'
    ; Directory in which the loadable extensions (modules) reside.
    ; http://php.net/extension-dir
    ; extension_dir = "./"
    ; On windows:
    ; extension_dir = "ext"	'//在下方插入两段内容'
    extension_dir =usr/local/php5/lib/php/extensions/no-debug-zts-20131226/	'//指向共享文件位置'
    extension = memcache.so	'//指向memcache模块'
    ...省略内容
    

四:测试服务端

4.1:用客户端检测服务端是否正常连接

  • [root@client memcache-2.2.7]# vim /usr/local/httpd/htdocs/index.php 
    <?php
    $memcache=new Memcache();
    $memcache->connect('192.168.79.133',11211);	'//连接Memcached服务器地址'
    $memcache->set('key','Memcache test Successfull!',0,60);
    $result=$memcache->get('key');
    unset($memcache);
    echo$result;
    ?>
    
    [root@client memcache-2.2.7]# service httpd stop
    [root@client memcache-2.2.7]# service httpd start
    
  • 浏览器访问192.168.79.134/index.php

mark

发布了126 篇原创文章 · 获赞 62 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/CN_TangZheng/article/details/104189201