zoukankan      html  css  js  c++  java
  • Memcache介绍

    Memcached介绍

    Memcached是一款开源的、高性能的纯内存缓存服务软件。Mem是内存的意思,cache是缓存的意思,d是daemon的意思
    

    Memcached在企业中的应用场景

    优点:
    1.对于用户来讲,用户访问网站更快了,体验更好了。
    2.对网站来说,数据库压力降低了。只有当内存没有数据时才会去请求数据库。第一次写入的数据也会请求数据库。一般公司没有预热,只有当用户读取过数据库才会放到Memcached中。
    3.提升了网站的并发访问,减少服务器数量。
    


    memcache相关参数说明

    -p <num>      指定监听端口 (default: 11211)
    -l <addr>     绑定监听的网卡 
    -d            后台运行
    -u <username> 指定用户
    -m <num>      分配内存大小 (default: 64 MB)
    -c <num>      并发访问连接数 (default: 1024) 
    -P <file>     指定pid文件存放路径,需要与-d一起使用
        memcache启动文件
    [root@cache01 ~]# cat /usr/lib/systemd/system/memcached.service 
    [Unit]  -----> 表示这个服务的介绍与一些依赖关系统
    Description=Memcached
    Before=httpd.service
    After=network.target
    [Service]----->表示这个服务怎么开启一些相关的参数 
    Type=simple
    EnvironmentFile=-/etc/sysconfig/memcached
    ExecStart=/usr/bin/memcached -u $USER -p $PORT -m $CACHESIZE -c $MAXCONN $OPTIONS
    
    [Install]----->安装
    WantedBy=multi-user.target
    

    Memcache服务部署

    第一个里程:安装memcached服务端
    yum -y install memcached
    
    第二个里程:修改配置文件,并启动服务
    [root@cache01 ~]# vim /etc/sysconfig/memcached 
    PORT="11211"     --->端口号
    USER="memcached" --->以什么用户运行
    MAXCONN="1024"   --->最大的连接数
    CACHESIZE="64"   --->缓存大小(MB)
    OPTIONS="-l 172.16.1.21"   ---> 其它的参数
    systemctl start memcached
    
    第三个里程:利用nc或telnet进行memcache测试
    telnet方式
    [root@cache01 ~]# telnet 172.16.1.21 11211
    Trying 172.16.1.21...
    Connected to 172.16.1.21.
    Escape character is '^]'.
    set liu1 0 0 10   ----> 写入数据
    oldboyssss     
    STORED
    get liu1          ----> 读取数据
    VALUE liu1 0 10
    oldboyssss
    END
    delete liu1       ----> 删除数据
    DELETED
    nc方式
    #写入数据
    [root@cache01 ~]# printf "set oldboy 0 0 10
    oldboy1231
    "|nc 172.16.1.21 1121
    1STORED
    #读取数据
    [root@cache01 ~]# printf "get oldboy
    "|nc 172.16.1.21 11211
    VALUE oldboy 0 10
    oldboy1231
    END
    #删除数据
    [root@cache01 ~]# printf "delete oldboy
    "|nc 172.16.1.21 11211
    DELETED
    

    命令语法格式说明

    set              key   0        0           10 
     oldboy0987 
     
    <command name>  <key> <flags> <exptime> <bytes>
     <data block>
    
    - <flags> 是在取回内容时,与数据和发送块一同保存服务器上的任意16位无符号整型(用十进制来书写)。客户端可以用它作为“位域”来存储一些特定的信息;它对服务器是不透明的。
    - <exptime> 是终止时间。如果为0,该项永不过期(虽然它可能被删除,以便为其他缓存项目腾出位置)。如果非0(Unix时间戳或当前时刻的秒偏移),到达终止时间后,客户端无法再获得这项内容。
    - <bytes> 是随后的数据区块的字节长度,不包括用于分页的“
    ”。它可以是0(这时后面跟随一个空的数据区块)。
    <data block>
    
    - <data block> 是大段的8位数据,其长度由前面的命令行中的<bytes>指定。
    
    
     换行且光标移至行首
    
     光标移至行首,但不换行
    
    第四个里程:在web服务器上部署memcache客户端
    下载地址:http://pecl.php.net/package/memcached
    tar xf memcache-2.2.5.tgz
    cd memcache-2.2.5
    /application/php/bin/phpize
    ./configure --enable-memcache --with-php-config=/application/php/bin/php-config --with-zlib-dir
    make
    make install
    
    第五个里程:修改php配置文件,在最后一行添加,并重启php服务
    sed -i '$a extension=memcache.so' /application/php/lib/php.ini
    pkill php    #killall php-fpm
    /application/php/sbin/php-fpm -t
    /application/php/sbin/php-fpm
    /application/php/bin/php -m|grep memcache
    
    第六个里程:添加代码,并在浏览器上进行访问
    cat >/application/nginx/html/blog/mc.php<<'EOF'
    <?php
        $memcache = new Memcache;
        $memcache->connect('10.0.0.21', 11211) or die ("Could not connect");
        $memcache->set('key_oldboy', 'hello,oldgirl');
        $get_value = $memcache->get('key_oldboy');
        echo $get_value;
    ?>
    EOF
    服务器上测试
    [root@cache01 ~]# printf "get key20171117
    "|nc 10.0.0.21 11211
    VALUE key20171117 0 11
    hello,world
    END
    

    利用web界面管理memcached服务

    官网地址:http://www.junopen.com/memadmin/ 
    tar xf memadmin-1.0.12.tar.gz -C /application/nginx/html/blog/
    浏览器访问http://blog.etiantian.org/memadmin
    



    根据自己需求定义

    利用Memcached缓存wordpress数据库

    第一步:下面memcached缓存配置文件
    wordpress缓存数据缓存到memcached中:https://cn.wordpress.org/plugins/memcached/
    wordpress缓存数据缓存到redis中:https://cn.wordpress.org/plugins/redis-cache/ 
    
    第二步:将下面好的配置文件放到wordprss下的wp-content中
    unzip memcached.3.0.1.zip
    cd memcached
    mv object-cache.php /application/nginx/html/blog/wp-conten
    t/
    wordpress会自动检查wp-content下面是否有object-cache.php
    使用memcached缓存wordpress博文数据
    
    第三步:修改object-cache.php配置文件,将array('127.0.0.1','');为memcached服务器ip地址
    [root@web01 wp-content]# grep -n "172" object-cache.php 
    418:    $buckets =array('172.16.1.21:11211');
    

    第四步:进行测试

    Memcache session会话共享的实现

    方法1:通过程序实现,web01只需要往memcahce写session,web02从memcahce读session,当作普通数据读写(更具有通用性)
    
    方法2:通过php的配置文件,php默认将session存储在文件中,修改为存储在memcached中
    sed -i 's#session.save_handler = files#session.save_handler = memcache#;$a session.save_path = "tcp://172.16.1.21:11211"' /application/php/lib/php.ini
    使用这个功能,需要使用php的session函数
    
  • 相关阅读:
    Flink安装排坑指南
    Java对类进行XSS过滤
    java.sql.SQLException: 无法转换为内部表示
    Flutter环境搭建
    运行npm命令 TypeError: Cannot read property 'get' of undefined
    利用Xilinx的cordic ip做开方运算
    modelsim脚本化仿真出现的两个错误
    opencv中使用imread()读入的图像,始终为显示为8位深度
    PS端时钟供给PL使用的问题
    Xilinx 使用shift_RAM消耗分布式RAM(LUTRAM)还是BRAM (Block RAM)?
  • 原文地址:https://www.cnblogs.com/yjiu1990/p/10668966.html
Copyright © 2011-2022 走看看