---Memcache缓存服务器   ---(缓存在内存中)
端口号 11211

-传统web架构的问题
~许多web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示
~随着数据量的增大、访问的集中,就会出现RDBMS的负担加重,数据库响应恶化、网站显示延迟等重大影响

-Memcache是高性能的分布式缓存服务器
~用来集中缓存数据库查询结果,减少数据库访问次数,以提高动态web应用的响应速度。

-内存管理机制

Slab Allocation机制
~按照预先规定的大小,将分配的内存分割成特定长度的内存块(chunk),再把尺寸相同的内存块分成组(chunk集合),这些内存块不会释放,可以重复利用。

Memcached使用名为Least Recently Used(LRU)机制来分配空间
-删除“最近最少使用”的记录
-当memcache的内存空间不足时,从最近未从被使用的记录中搜索,并将其空间分配给新的记录。

##############################

    ---部署Memcached

    /etc/sysconfig/memcached  //配置文件

    yum -y install memcached
    systemctl restart memcached
    systemctl enable memcached

    netstat -tlpn | grep memcache (:11211)

    使用telnet测试memcached服务
    yum -y install telnet
    telnet 127.0.0.1 11211

    set name 0 180 3    #设置变量名为name 0--不压缩 180--数据缓存时间 3--存储的数据字节数量
    aaa
    STORED
    get name             #获取变量name的值
    aaa
    add user 0 180 3 
    bbb
    STORED
    get user
    bbb
    quit

    #################################

    --LNMP+Memcached

    部署LNMP+memcached网站平台,通过PHP页面实现对memcached服务器的数据操作

    yum -y install gcc gcc-c++ pcre-devel openssl-devel zlib-devel  //安装依赖包
    useradd -s /sbin/nologin nginx
    tar -xzf nginx-1.8.0...
    cd nginx-1.8.0
    ./configure \
    >--user=nginx \
    >--group=nginx \
    >--prefix=/usr/local/nginx \
    >--with-http_ssl_module
    make&&make install

    yum - y install php php-mysql
    yum -y localinstall php-fpm...

    yum -y install mariadb-server mariadb-devel

    yum -y install php-pecl-memcached #为 PHP 添加 memcache 扩展

    systemctl restart mariadb   3306
    systemctl restart php-fpm   9000    
    /usr/local/nginx/sbin/nginx 80

    netstat -tlnp | grep mariadb /php-fpm /nginx        

    修改nginx配置文件

    /usr/local/nginx/conf/nginx.conf
    location / {
        root html;
        index index.php index.html;
     }
     location ~\.php$ {
        root html;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        #fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi.conf;
     }
     nginx -t   #检查语法
     nginx -s reload 

     创建测试页面并访问  
    vim /usr/local/nginx/html/test.php
    connect(‘localhost’,11211) or die (‘could not connect!!’);
    $memcache->set(‘key’,‘test’);             //定义变量
    $get_values=$memcache->get(‘key’);        //获取变量值
    echo $get_values;
    ?>

    firefox 192.168.4.1/test.php
    test

    ###################################

    ---使用Tomcat 设置Session
    Session?
    --存储在服务器端,保存用户名、密码等信息。
    简单理解为:在一个网站的登录页面中输入用户名密码等信息后,再打开此网站中其他网页,不需要再次进行用户登录。

    Cookies?
    --由服务器下发给客户端,保存在客户端的一个文件里。保存的内容主要包括:sessionid,账户名,过期时间等
    简单理解:登录淘宝,加入购物车,退出登录,然后再次打开淘宝首页,发现购物车中有提示,进入到购物车中后,能够看到信息。

    (1)部署nginx调度服务器     #配置nginx将用户请求发往后端的tomcat服务器
    /etc/local/nginx/conf/nginx.conf

    upstream tomcat {
        server 192.168.4.2:8080
        server 192.168.4.3:8080
    }
    server {

        location / {
            proxy_pass http://tomcat;
            ...
        }
    }

    (2)部署两台虚拟机,并部署tomcat服务器

    【4.2】
    tar xzf apache-tomcat-8.0.30.tar.gz
    mv apache-tomcat.. /usr/local/tomcat
    cd /usr/local/tomcat
    bin/startup.sh

    设置测试页
    vim webapps/ROOT/test.jsp
     
    
        <%String s = session.getId();%>
        <%=s%>
        

tomcat web server A

【4.3】 tar xzf apache-tomcat-8.0.30.tar.gz mv apache-tomcat.. /usr/local/tomcat cd /usr/local/tomcat bin/startup.sh 设置测试页 vim webapps/ROOT/test.jsp <%String s = session.getId();%> <%=s%>

tomcat web server A

bin/shutdown.sh bin/startup.sh //重启tomcat失败,查看8005端口是否开启 netstat -tlnp | grep 8005 //解决:修改 /usr/lib/jvm/jre/lib/security/java.security //securerandom.source=file:/dev/urandom firefox 192.168.4.1/test.jsp session ID 不同 【4.2】【4.3】 ---实现session共享 拷贝msm相关的jar包 cp /root/lnmp../session/*.jar /usr/local/tomcat/lib 修改tomcat,使其可以连接到memcache服务器 /usr/local/tomcat/conf/context.xml 在原有的Context中加入以下说明 bin/shutdown.sh bin/startup.sh firefox 192.168.4.1/test.jsp session id 相同