• 详解----memcache服务端与客户端


     Memcache是danga.com的一个项目,用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。

        它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached自管理这些HashTable。

        为什么会有Memcache和memcached两种名称?

    这么理解吧,你知道mysql吧,mysql就是服务器,但是php没有mysql扩展是连不上,

    memcached用来进行内存缓存,php要连接需要添加memcache扩展,这下理解了吧。

    下面是配置方法:

    1)安装memcached前需要先安装libevent 

    [root@aliyun tools]# tar -zxf libevent-1.4.13-stable.tar.gz
    
    [root@aliyun tools]# cd libevent-1.4.13-stable
    [root@aliyun libevent-1.4.13-stable]# ./configure
    [root@aliyun libevent-1.4.13-stable]# make && make install
    

     2) 安装memcahced服务 

    tar -zxf memcached-1.4.13.tar.gz
    cd memcached-1.4.13
    ./configure
    make && make install
    

     3)启动服务

    [root@weiwei memcached-1.4.13]# memcached -m 16m -p 11211 -d -u root -c 8192
    
    给多少内存要自己算,根据需求
    还可以同时起几个
    [root@weiwei memcached-1.4.13]# memcached -m 16m -p 11212 -d -u root -c 8192
    [root@weiwei memcached-1.4.13]# memcached -m 16m -p 11213 -d -u root -c 8192
    

      4)存数据取数据

    操作memcached命令的语法:
    set             key   0         0     10
    <command name> <key> <flags><exptime><bytes>
    
                     过期时间
    

      

    #存储                        
    [root@weiwei ~]# printf "set key008 0 0 10
    oldboy0987
    " | nc 127.0.0.1 11211
    STORED
    #查询
    [root@weiwei ~]# printf "get key008
    "|nc 127.0.0.1 11211
    VALUE key008 0 10
    oldboy0987
    END
    #删除
    [root@weiwei ~]# printf "delete key008
    "|nc 127.0.0.1 11211
    DELETED
     
    也可以telnet登录,,然后操作,但是不是很建议,不方便
    

      5)安装memecache客户端

    ar -zxf memcache-2.2.5.tgz
    cd memcache-2.2.5
    /application/php/bin/phpize
    ./configure --with-php-config=/application/php/bin/php-config --enable-memcache --with-zlib-dir
    echo $?
    make && make install
    ll /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
    total 244
    -rwxr-xr-x. 1 root root 246624 Sep 25 20:09 memcache.so
    

      6)因为配置客户端所以要配置php.ini文件

    改为如下:
    winodows的不要改
    extension_dir = "/application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/"
     
    并添加一行
    extension=memcache.so
    

      7)然后重启php,查看是否生效

    pkill php-fpm
    /application/php/sbin/php-fpm
    phpinfo();查看有没有相应的模块
     
    用php脚本的方式查看
    <?php
        $memcache = new Memcache; //创建一个memcache对象
        $memcache->connect('127.0.0.1', 11211) or die ("Could not connect"); //连接Memcached服务器
        $memcache->set('key001', 'oldboy001'); //设置一个变量到内存中,名称是key001值是oldboy001
        $memcache->set('key002', 'oldboy002'); //设置一个变量到内存中,名称是key002值是oldboy002
        $get_value01 = $memcache->get('key001'); //从内存中取出key001的值
        $get_value02 = $memcache->get('key002'); //从内存中取出key002的值
        echo $get_value02."<br>";
        echo $get_value01;
    ?>
     
    结果:
    oldboy002
    oldboy001
    

      8)memcached如何实现集群中的session共享存储

     

    在php.ini文件中修改,所有的web服务器都改这两个地方就可以共享存储session了,每个WEB服务安装个客户端就好,然后去吧
    1)session.save_handler = memcache
    2)session.save_path = "tcp://192.168.222.128:11211"
     
     
    优点:
    1)memcached是内存缓存,在读写速度上会比普通files时快很多。
    2)可以解决多个服务器共用session的难题。
    缺点:
    1)session数据都保存在memory中,持久化方面有所欠缺,但对session数据来说不是问题。
    2)也可以用其他的持久化系统存储sessions,例如:redis,ttserver。
    3)高性能高并发场景,cookies的效率比session要好很多,因此,很多大网站都会用cookies解决会话共享问题
    

      9)memcached状态查看

    stat settings可以查看一些memcached设置 例如 线程数
    stats slabs 查看slabs相关情况
    stats items 查看Items相关情况
    stats sizes查看存在的Item个数和大小
    stats cachedump 查看key value
    stats reset 清理统计数据
    

      

  • 相关阅读:
    GSON -JSON 反序列化-多节点名称支持
    Jedis 分片原理
    闭锁-CountDownLatch
    XML序列化及反序列化
    用GIT操作SVN
    报表worker-CPU使用率过高原因排查
    二.PlantUML 之活动图
    一.PlantUML 与 IDEA 集成
    ArrayList
    VI常用命令
  • 原文地址:https://www.cnblogs.com/jianz/p/8042614.html
Copyright © 2020-2023  润新知