memcached简析

一. memcached简介

     memcached is a high-performance, distributed memory object caching system, generic in nature, but intended for use in      speeding up dynamic web applications by alleviating database load.

     (由 LiveJournal旗下的Danga Interactive研发)

        #高性能,分布式缓存系统

    

     缓存服务器:

         缓存:cache,无持久存储功能;

         bypass缓存 # 旁挂式缓存

         k/v cache,仅支持存储流式化数据;

        

     特性:

         k/v cache:仅可序列化数据;存储项:k/v (key:value)

         智能性一半依赖于客户端(调用memcached的API开发程序),一半依赖于服务端;

         分布式缓存:互不通信的分布式集群;

         分布式系统请求路由方法:取模法(对机器数量取模来决定发往哪台机器),

                        一致性哈希算法(顺时针哈希环);

         算法复杂度:O(1)

         清理过期缓存项:

             缓存耗尽:LRU

             缓存项过期:惰性清理机制

                #即会定期检查缓存,当缓存失效时候并不做清理,而是有新缓存写入时

                候,直接覆盖原有的旧缓存内容

二. 安装配置:

             由CentOS 7 base仓库直接提供:

             监听的端口:

                 11211/tcp, 11211/udp

        

             主程序:/usr/bin/memcached

             配置文件:/etc/sysconfig/memcached

            wKioL1gUkfPg_QObAAA9N3RpIOo837.png-wh_50

             Unit File:memcached.service

             管理工具:memcached-tool

             协议格式:memcached协议

                 文本格式

                 二进制格式


三.memcache 命令详解

        详细协议帮助 :  /usr/share/doc/memcached-1.4.15/protocol.txt

         命令:

             统计类:stats, stats items, stats slabs, stats sizes

             存储类:set, add, replace, append, prepend

             命令格式:<command name> <key> <flags> <exptime> <bytes>

                            额外信息  过期时间  大小

                   <cas unique>        #回车后才能输入值

    

                key    key 用于查找缓存值

                flags 可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息

                   # 默认用1 即可

                expiration time 在缓存中保存键值对的时间长度(以秒为单位,0 表示永

                远)

                bytes 在缓存中存储的字节点

                value 存储的值(始终位于第二行)

    

             检索类:get, delete, incr/decr

             清空:flush_all

        

         示例:

             telnet> add KEY <flags> <expiretime> <bytes> \r

             telnet> VALUE参数 用法

        

                 wKiom1gUkfHBKxIaAAAPuoGTe3o781.png-wh_50

         memcached程序的常用选项:

             -m <num>:Use <num> MB memory max to use for object storage; the

                default is 64 megabytes.

             -c <num>:Use <num> max simultaneous connections; the default is 1024.

             -u <username>:以指定的用户身份来运行进程;

             -l <ip_addr>:监听的IP地址,默认为本机所有地址;

             -p <num>:监听的TCP端口, the default is port 11211.

             -U <num>:Listen on UDP port <num>, the default is port 11211, 0 is off.

            wKioL1gUkfLRK0NEAAEYqJnIHBY380.png-wh_50

             -M:内存耗尽时,不执行LRU清理缓存,而是拒绝存入新的缓存项,直到有多余的空

                间可用时为止;

             -f <factor>:增长因子(内存分块的大小增长倍数);默认是1.25;

             -t <threads>:启动的用于响应用户请求的线程数;

            

             memcached默认没有认证机制,可借用于SASL进行认证;

             SASL:Simple Authentication Secure Layer

    

 三.   API:

     php-pecl-memcache

     php-pecl-memcached

     python-memcached

     libmemcached

    #此工具包中包含多个memcache的命令行管理工具

     libmemcached-devel

    

     命令行工具:

     memcached-tool  SERVER:PORT  COMMAND

        ————————————————-

        [root@localhost ~]# rpm -ql libmemcached

        /usr/bin/memaslap

        /usr/bin/memcapable

        /usr/bin/memcat

        /usr/bin/memcp

        /usr/bin/memdump

        /usr/bin/memerror

        /usr/bin/memexist

        /usr/bin/memflush

        /usr/bin/memparse

        /usr/bin/memping

        /usr/bin/memrm

        /usr/bin/memslap

        /usr/bin/memstat

        /usr/bin/memtouch

        ————————————————–

    


四. 利用 telnet 管理memcache 示例

        1. yum install telnet

        –> telnet localhost 11211

        stats:

        

          

              wKiom1gUkfKh9dgRAAA-6iEV5Kc557.png-wh_50


五. nginx 对memcache 的支持

        所需模块:  ngx_http_memcached_module

            Syntax: memcached_bind address [transparent] | off;

            Default: —

            Context: http, server, location

                #用于绑定 memcache 服务器

        

            Syntax: memcached_pass address;

            Default: —

            Context: location, if in location

                #绑定memcache 集群

            eg:

            server {    

            location / {        

                set $memcached_key "$uri?$args";

                    #将指定的key 放入memcache 生成缓存;

                    memcached_pass host:11211;

                    error_page     404 502 504 = @fallback;

                    }    

        

                location @fallback {        

                    proxy_pass  http://backend;    

                    }

             }

             ============================================================

原创文章,作者:ldt195175108,如若转载,请注明出处:http://www.178linux.com/55611

(0)
ldt195175108ldt195175108
上一篇 2016-10-29 20:01
下一篇 2016-10-29 20:29

相关推荐

  • 配置LAMP (php-fpm模式)部署步骤

    配置LAMP (php-fpm模式)部署步骤 1.安装mariadb yum install maridb-server -y 1).配置server.cnf cp /etc/my.cnf.d/server.cnf{,.back} vim /etc/my.cnf.d/server.cnf ##mariadb服务器端配置文件 [mysqld] ##以下项是优化…

    Linux干货 2017-06-02
  • sed基本用法详解

    一、sed介绍:        sed是非交互式的编辑器,同时又是面向字符流的,一次处理一行文本。当前输入的行被缓存至一个被称为模式空间(pattern space)的内存空间中,与给定的模式进行比对,若不匹配,则将内容输出至屏幕,之后读取第二行;若匹配,则执行编辑命令,命令执行完成后,将模式空间中…

    Linux干货 2016-08-10
  • linux系统的路由功能

    1、概要    大家应该都明白,不同网段的报文包传播,是需要路由的转发转发功能的,那么,一个linux操作系统能不能充当路由器呢?下面不妨来验证一下。 2、网络拓扑 3、实现过程    <1>俩个centos6分别充当Router1和Router2。并添加足够的网卡。    <2&…

    Linux干货 2016-09-06
  • Linux screen命令

    screen命令 一、简介 Screen是一款终端模拟的屏幕管理器,用于命令行终端自由切换。 当我们需要执行一个用时较多的作业,不希望自己或者他人误操作关闭终端导致作业中断,可以进入screen,这样,当终端关闭,作业仍会继续执行。 GNU’s Screen 官方站点:http://www.gnu.org/software/screen/ &nb…

    2017-07-13
  • 网络班22期+第二周作业练习

    常用的文件管理命令: ls,显示文件或目录 -l:显示文件或目录的包括权限、属主、属组大小创建日期等详细信息 [root@centos7 ~]# ls -l total 16 -rw-r–r–. 1 root root   64 Aug&nbsp…

    Linux干货 2016-09-05
  • 初识SElinux

    一、SElinux(Secure Enhanced Linux):安全增强的Linux        SElinux是一个在内核中实践的强制访问控制(MAC)安全性机制,由美国国家安全局NSA(The National Security Agency)和SCC(Secure Computing Co…

    Linux干货 2016-09-15