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

相关推荐

  • 管理SYSTEMd

    核心概念unit,systemctl管理系统服务,

    Linux干货 2018-01-04
  • 第一周:Linux基础之常用命令(二)

    一、Linux的命令使用格式 命令的语法通用格式: ~]# COMMAND  OPTIONS  ARGUMENTS   命令  选项  参数 1.  COMMAND,命令:发起命令时将请求内核将某个二进制程序运行为一个进程,命令本身是一个可执行的程序文件,二进制格式的文件有可能会调用共享库文件。 多…

    Linux干货 2016-09-18
  • 任务计划配置

        任务计划:         linux任务计划,周期任务执行         未来的某个时间点执行一次任务:at,batch:系统自行选择空闲时间去执行此处指定的任务 &n…

    Linux干货 2016-09-12
  • IP地址与网络配置方式

    IP 地址 它们可唯一标识IP网络中的每台设备 每台主机(计算机、网络设备、外围设备)必须具有唯一的地址 IP地址由两部分组成: (总共32位) 网络ID: 标识网络 每个网段分配一个网络ID 主机 ID: 标识单个主机 由组织分配给各设备   IP 地址分类 32位IP=网络ID+主机ID A 类: 前8位是网络ID位,后24位是主机ID位 00…

    2017-05-07
  • Linux磁盘管理详解

    linux磁盘管理 添加磁盘步骤: fdisk 管理磁盘分区 格式化文件系统。 设备挂载 开机自动挂载 UUID挂载 取消挂载点 Parted(gpt大于2G分区) 查看文件系统的使用情况。 df 查看挂载信息与磁盘使用量 du 查看使用量 查看分区状况lsblk 查看设备信息blkid linux磁盘管理 当全新安装了一块新的硬盘设备后,为了更充分、安全的…

    Linux干货 2016-09-07
  • 高可用+LVS-NAT

    关键:floating VIP 要以组为单位同时切换 实验1: 主备VRRP 切换实验 预期: 设定配置文件: A主机 (172.18.48.61) vrrp_sync_group VG1 { group { outside_network inside_network } } vrrp_instance outside_network { state MA…

    2017-05-14