zoukankan      html  css  js  c++  java
  • 三、NOSQL之Memcached缓存服务实战精讲第二部

    1.Memcached服务安装

         Memcached的安装比较简单,很多平台都是支持Memcached,常见的有:Linux 、Windows

      服务端端:    

               cd /home.oldboy/tools
               wget http://www.danga.com/memcached/dist/memcached-1.4.0.tar.gz 
               wget https://github.com/downloads/libevent/libevent/libevent-2.0.19-stable.tar.gz  
        libevent 首先进行安装:
    1. wget https://github.com/downloads/libevent/libevent/libevent-2.0.19-stable.tar.gz  
    2. tar -zxvf libevent-2.0.19-stable.tar.gz  
    3. cd libevent-2.0.19-stable  
    4. ./configure
    5. make  
    6. make install  
     memcached服务端的安装:
    1. tar -zxvf memcached-1.4.0.tar.gz  
    2. cd memcached-1.4.0
    3. ./configure  
    4. make  
    5. make install  

    2.启动memcached

    查看路径:which memcached

    [root@djw3 ~]# which memcached
    /usr/local/bin/memcached

    查看帮忙:/usr/local/bin/memcached  -h

    常用参数说明:-p 指定监听的端口

                              -l  指定监控的地址(默认本机所有网卡的地址都监听)

                             -m 分配多大的内存区(默认是64M)

                              -c  默认能承受多少并发,默认是1024

                              -u  指定用户 

                              -d  后台运行

                              -P pid文件,当前的进程写入到哪个文件,系统通过PID管理文件方便

                              -vv  以very vrebose模式启动,出错的时候用此命令系统

    登陆:memcached -p 11211 -u root -m 16m -c10240  -d

    查看:lsof -i :11211

    如果要启动的话,在启动一个不同的端口,相同的命令就可以了。

    3.操作memcached存放数据

    1) 用nc命令 (nc命令想要连接到某处)

    存:printf "set key008 0 0 10 oldboy0987 "|nc 127.0.0.1 11211

    [root@djw3 ~]# printf "set key008 0 0 10 oldboy0987 "|nc 127.0.0.1 11211
    STORED   --->stored 标识添加成功

    取:printf "get key008 "|nc 127.0.0.1 11211

    [root@djw3 ~]# printf "get key008 "|nc 127.0.0.1 11211
    VALUE key008 0 10
    oldboy0987
    END

    删除: printf "delete key008 " |nc 127.0.0.1 11211

    2) telnet 命令操作数据

    telnet 127.0.0.1 11211  ---反应过慢,一般不推荐

    [root@djw3 ~]# telnet 127.0.0.1 11211
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    set key 0 0 10
    oldboy

    在telnet中,通过stats 可以看见memcached状态,通过quit可以退出

    printf "stats "|nc 127.0.0.1 11211

     4.Memcached的操作语法

       <command name> <key> <flags> <exptime> <bytes>

                   set                 key       0             0             10

    exptime:0表示不过期,其他表示到期就删除

    flag:可以理解为一个标识符

    bytes:数据占用哪个区块长度,比如10bytes的区块长度

    5.关于Memcached的关闭

      1)如果数据不是重要的话:pkill memcached、kill 进程号

      2)指定pid开启后,关闭pid:

            开启:memcached -p 11211 -u root -m 16m -c10240  -d  -P /var/run/11211.pid

            关闭:kill `cat /var/run/11211.pid`

      注意;1) nginx、apache、mysql都可以通过pid的方式杀掉  2) pid进程号是杀除了,但是文件会保留下来,如下:

    [root@djw3 run]# ll /var/run/
    total 84
    -rw-r--r--  1 root    root       6 Nov 12 03:03 11211.pid
    -rw-r--r--  1 root    root       6 Nov 12 03:04 11213.pid
    -rw-r--r--  1 root    root       4 Nov  9 19:40 auditd.pid

    6.企业工作场景中如何配置memcached ?

            在工作中,一般都是开发人员提出需求,说要部署一个memcache,做为数据缓存。我们运维接到需求,需要和开发确定,(显得水平高)内存指定多大,根据业务有多少数据要缓存来确定。还要确定业务重要性,进而采取负载均衡,分布式等架构,最后确定并发连接数。

            实际的部署,一般都是安装memcached服务端,并确保能够连接上。

    7.Lnmp一体环境安装Memcached客户端

          1)   下载客户端: wget http://pecl.php.net/get/memcache-2.2.5.tgz

          2)    安装客户端memcached:

                tar zxvf 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

    查看,安装会有的模块:

     [root@djw1 memcache-2.2.5]# ll /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
    total 2324
    -rwxr-xr-x 1 root root  414245 Jun 13 14:45 eaccelerator.so
    -rwxr-xr-x 1 root root 1070977 Jun 14 02:15 imagick.so
    -rwxr-xr-x 1 root root  246656 Jun 15 13:01 memcache.so

    配置php.ini文件内容

    extension_dir = "/application/php/lib/php/extensions/no-debug-non-zts
    -20090626/"
    extension = memcache.so

    检查客户端memcached是否安装成功:

             只有安装了memcached客户端,那么php等程序才能通过memcached客户端的库访问memcached服务器的服务

    测试代码:

    <?php
        $memcache = new Memcache;
        $memcache->connect('127.0.0.1', 11211) or die ("Could not connect");
        $memcache->set('key001', 'oldboy001');
        $memcache->set('key002', 'oldboy002');
        $get_value01 = $memcache->get('key001');
        $get_value02 = $memcache->get('key002');
        echo $get_value02."<br>";
        echo $get_value01;
    ?>

    测试结果:

    8.memcached的应用

      1)数据库前端的内存缓存   2)集群中的session共享存储

    9.如何实现集群中的session共享存储

        在例如负载均衡架构中,我们需要保持会话共享,那么就需要所有的web服务器都公用session,可以选择NFS,但是如果选择memcache,会更加的快速,因此,如下配置就可以实现memcached的session共享。

       在php.ini文件中配置如下:

       session.save_handler = memcache

       session.save_path = "tcp:// 192.168.0.102:11211"

    10. memcached的分布式集群

           memcached需要用url_hash算法,在nginx的模块中有一致性hash算法。访问一个web服务器后,指定到唯一的一台memcached上。

    11.memcached服务的多种操作管理方式

              1)客户端请求memcached如果没有,就会请求数据库,同时是由客户端将数据传到memcached.

              2)   如果客户端更新数据,那么就将数据放到数据库上,这时数据库有两种选择,一种是直接更新memcached,一种是通知memcached过期了,删除数据。下次请求时有客户端放到memcached上面。 

  • 相关阅读:
    HTML5 重力感应效果,实现摇一摇效果
    WEB 移动端 CSS3动画性能 优化
    jquery 插件封装模板
    textarea 提交到数据库的内容,输出到 html 中显示正常的格式
    js根据银行卡号判断属于哪个银行,并返回银行缩写及银行卡类型
    微信小程序如何引用iconfont图标
    nodejs: express basic
    javascript设计模式:适配器模式
    javascript设计模式:装饰者模式
    javascript设计模式:代理模式
  • 原文地址:https://www.cnblogs.com/dangjingwei/p/11814388.html
Copyright © 2011-2022 走看看