linux自学笔记--memcache和varnish缓存服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux自学笔记--memcache和varnish缓存服务器相关的知识,希望对你有一定的参考价值。

1.memcached: kv结构,存储于内存之中,可减小数据库访问压力,也可做为session服务器使用

 (1)常用命令

    -u 指定用户    -m 指定内存大小

    -d start|restart|stop    -p 指定端口,默认11211

    -n 最小分配空间    -f 增长因子,按最小分配空间为      基数计算,默认为1.25倍

    -vv 查看具体启动过程

 (2)连接memcached

    telnet x.x.x.x 11211

    quit 退出

    查看 stats items

    保存 set key flags timeout size

    提取 get key

    追加 append key flags timeout content_size content,例:

        append magedu 0 60 4 .com

    加减 incr/decr key num

    清空 flush_all

 (3)php连接

    centos7 php-pecl-memcached

 (4)php session服务器 

    php.ini文件

    session.save_handler=memcache

    session.save_path="tcp://127.0.0.1:11211?persistent=1 & weight=1 & timeout=1 & retry_interval=15"


2.varnish: 可使用内存或硬盘缓存,可用于前端静态页面图片js的缓     存服务器

    (1)连接varnish

    varnishadm -s /etc/varnish/secret -T 127.0.0.1:6082

    vcl.list 列出配置文件,avrilable可用,active已用

    vcl.show confname 查看具体配置文件

    vcl.use confname使用配置文件

    vcl.load confname filename 加载文件成为配置文件

    backend.list 

    storage.list 缓存类型    

    (2)基础配置

      /etc/varnish/default.vcl

      backend default {

        .host="x.x.x.x" 被监听主机的ip

        .port="80"

    }

      /etc/varnish/varnish.params

      VARNISH_LISTEN_PORT=80

      VARNISH_STORAGE="file,/var/lib/varnish/varnis_storage.bin"

    硬盘存储,二进制文件,不要去cat,文件可能被破坏

 VARNISH_STORAGE="mallc,2048" 内存存储

    (3)常用变量

    bereq: 有varnish向backend主机发送http请求 

    bereq.http.HEADERS

    bereq.url

    bereq.proto 协议版本 

    bereq.backend

    

    beresp:

    beresp.status

    beresp.backend.name

    beresp.http.HEADERS

    beresp.ttl 除去响应时长,剩下ttl生存时长


    req: 由backend向varnish主机发送http请求

    req.method 4.0请求方法

    req.request 3.0请求方法

    

    obj:

    obj.hits 命中次数

    obj.ttl 对象ttl

    

    server:

    server.ip

    server.hostname

     (4)实例

    不让指定页面查缓存

    sub vcl_recv {

        if(req.url ~"^/test.html$"){

            return(pass)

        }

    }

    给头部增加命中提示

    sub vcl_deliver {

        if(obj.hits>0){

        set resp.http.cache="hit"+""+server.ip

        }else{

        set resp.http.cache="miss"+""+server.ip

        }

    }

    清除页面缓存3.0

    sub vcl_hit {

        if(req.request == "PURGE"){

        purge;

        error 404 "not in cache";

        }

    }

    curl -X PURGE http://magedu/test

    清除页面缓存4.0

    sub vcl_recv {

        if(req.method == "PURGE"){

        return(purage);

        }

    }

    sub vcl_purge {

        return(synth(200,"purged"))

    }

    curl -X PURGE http://magedu/test

    (5)动静分离

    backend server1 {

     ...

    }

    backend server2 {

    ...

    }

    sub vcl_recv {

        if(req.url ~ "(?i)\.php$"){

        set req.backend_hint=server1;

        }eles{

        set req.backend_hint=server2;

        }

    }

    (6)负载均衡

    import directors;

    sub vcl_init {

        new bar=directors.round_robin();

        bar.add_backend(server1);

        bar.add_backend(server2);

    }

    sub vcl_recv {

        set req.backend_hint=bar.backend();

    }


以上是关于linux自学笔记--memcache和varnish缓存服务器的主要内容,如果未能解决你的问题,请参考以下文章

Memcached 在linux上安装笔记

Linux自学笔记——用户和组管理

linux自学笔记--bash数据类型循环和函数

Linux自学笔记——linux进程及作业管理

Linux自学笔记:Linux系统基础入门

linux自学笔记--iptables