• memcached


    memcached企业应用场景:
    1、数据库前端的缓存。
    读数据:
    开发程序从逻辑上,首先访问(读)memcahced,
    如果没有数据在访问mysql。
    写数据:
    如果写数据,那么再写数据库的同时,
    把数据写入到memcached,或者写入到mysql的同时,
    由mysql复制到memcached。
    Linux运维角色:
    搭建memcached服务,提供服务(使用信息问开发)

    2、集群后端的共享会话session。
    session门票。如果网站内有了这个门票,就可以浏览任意页面。
    解决共享会话方案
    1、nginx的调度算法ip_hash(缺点:导致负载不均)
    2、通过memcahced做共享会话。
    3、cookies(放在用户浏览器端)。
    优点,可以大并发,缺点:容易篡改,不安全。

    参考内容:
    http://oldboy.blog.51cto.com/2561410/1331316
    http://oldboy.blog.51cto.com/2561410/1323468

    搭建memcached服务
    1、libevent(epoll模型,libevent作为事件通知机制)。
    yum install libevent-devel -y
    rpm -qa libevent-devel

    2、memcached
    yum install memcached -y
    rpm -qa memcached


    3、启动服务并检查
    [root@db01 ~]# memcached -m 16m -c 2048 -u root -p 11211 -d
    [root@db01 ~]# netstat -lntp|grep memcache
    tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 4026/memcached
    tcp 0 0 :::11211 :::* LISTEN 4026/memcached

    4、存取数据实践
    key--->value健值对
    inode--->block

    访问memcached软件,
    telnet,nc
    yum install telnet nc -y

    telnet 127.0.0.1 11211

    [root@db01 ~]# telnet 127.0.0.1 11211
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    set k1 0 0 6
    oldboy
    STORED

    get k1
    VALUE k1 0 6
    oldboy
    END

    delete k1
    DELETED
    get k1
    END
    ===============================
    [root@db01 ~]# printf "set key008 0 0 10 oldboy0987 "|nc 127.0.0.1 11211
    STORED
    [root@db01 ~]# printf "get key008 "|nc 127.0.0.1 11211
    VALUE key008 0 10
    oldboy0987
    END
    [root@db01 ~]# printf "delete key008 "|nc 127.0.0.1 11211
    DELETED
    [root@db01 ~]# printf "get key008 "|nc 127.0.0.1 11211
    END


    服务端:memcached
    客户端:memcache

    memcache客户端

    php所在服务器上安装memcache客户端,程序才能访问到memcached。

    memcache安装包的链接地址:http://pan.baidu.com/s/1eStd9Uq

    tar zxf 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
    make
    make install
    cd ../
    ls -l /application/php-5.5.32/lib/php/extensions/no-debug-non-zts-20121212/


    [root@web02 php]# cat /application/nginx/html/blog/a.php
    <?php
    phpinfo();
    ?>
    通过页面:blog.etiantian.org/a.php检查mc的配置情况。

    配置:
    vim /application/php/lib/php.ini
    extension_dir = "/application/php-5.5.32/lib/php/extensions/no-debug-non-zts-20121212/"
    extension = memcache.so
    重启Php
    pkill php-fpm
    /application/php/sbin/php-fpm

    再次通过页面:blog.etiantian.org/a.php检查mc的配置情况。
    搜索memcache页面内容,如果有结果,表示成功。

    开发Php访问memcached代码。
    <?php
    $memcache = new Memcache;
    $memcache->connect('10.0.0.7', 11211) or die ("Could not connect Mc server");
    $memcache->set('key', 'oldboy book');
    $get= $memcache->get('key');
    echo $get;
    ?>

    管理memcached web端
    tar zxvfC memadmin-1.0.12.tar.gz /application/nginx/html/blog/
    [root@web02 tools]# ll /application/nginx/html/blog/memadmin/

    http://blog.etiantian.org/memadmin

    控制命中
    for n in {1..10000};do printf "get key "|nc 127.0.0.1 11211;done


    memcache内存管理机制
    memcache数据过期及删除机制

    缓存软件:
    memcached同源软件(相同协议)
    memcachedb 持久化(放到磁盘),sina开发的。被redis超越了。
    TTSERVER 持久化(放到磁盘)
    自身主从复制。

    memcache自身不支持集群。通过其他方式支持集群。

    集群:url_hash算法
    ip_hash算法


    一般要使用一种算法,一致性hash算法。

  • 相关阅读:
    MySQL数据库“局部”乱码
    每个人都可以写博客
    命令行导入SQL文件
    数据库连接扩展
    PHP程序设计经典300例
    C# 调用外部dll
    asp.net中实现文件下载功能
    Windows10下Docker的安装
    java基础——面向对象
    java基础——第一章概述
  • 原文地址:https://www.cnblogs.com/xiejincheng/p/7011491.html
Copyright © 2020-2023  润新知