缓存之memcached

2022-04-13 00:00:00 命令 缓存 对象 命中 次数

什么是memcached

memcached是一套分布式的快取系统,与redis相似,当初是Danga Interactive为了LiveJournal所发展的,但被许多软件(如MediaWiki)所使用。这是一套开放源代码软件,以BSD license授权协议发布。

memcached缺乏认证以及安全管制,这代表应该将memcached服务器放置在防火墙后。


官方地址

http://memcached.org/


特征

memcached作为高速运行的分布式缓存服务器,具有以下的特点。

协议简单基于libevent的事件处理内置内存存储方式memcached不互相通信的分布式

支持的语言

许多语言都实现了连接memcached的客户端,其中以Perl、PHP为主。仅仅memcached网站上列出的有:

PerlPHPPythonRubyC#C/C++Lua等等

常用命令及参数

启动Memcache 常用参数

    -p <num>      设置TCP端口号(默认设置为: 11211)
    -U <num> UDP监听端口(默认: 11211, 时关闭)
    -l <ip_addr> 绑定地址(默认:所有都允许,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问)
    -c <num> max simultaneous connections (default: 1024)
    -d daemon方式运行
    -u <username> 绑定使用指定用于运行进程<username>
    -m <num> 允许大内存用量,单位M (默认: 64 MB)
    -P <file> PID写入文件<file>,这样可以使得后边进行快速进程终止, 需要与-d 一起使用

    更多可以使用 memcached -h 在linux下:./usr/local/bin/memcached -d -u root -l 192.168.1.197 -m 2048 -p 12121 在window下:d:\App_Serv\memcached\memcached.exe -d RunService -l 127.0.0.1 -p 11211 -m 500 在windows下注册为服务后运行:sc.exe create Memcached_srv binpath= “d:\App_Serv\memcached\memcached.exe -d RunService -p 11211 -m 500″start= auto net start Memcached

    连接和退出

      telnet 127.0.0.1 11211
      quit

      下面指定先要执行

        telnet 127.0.0.1  11211

        查看命令

        get key查看指定key的缓存

        存储命令

        add key flag expire length新增指定key的缓存


            set key flag expire length设置指定key的缓存。若key存在,则replace替换,否则add新增

          key        缓存的键
          flag 标志,要求为一个正整数。用来标识数据原本的格式,以便后期对数据的处理。
          expire 有效期。小于30天的秒数(60*60*24*30秒),表示从设定开始,多少秒后失效。大于30天的秒数(60*60*24*30秒),表示的距离1970年1月1日多少秒后失效,常用于定时。0表示不自动失效,并不代表有效。
          length 缓存的值的长度(以字节为单位)

          修改命令

          replace key flag expire length替换指定key缓存的值

          删除命令

          delete key [time]删除指定key的缓存。可选参数time,表示在删除缓存后的多少秒内,不允许get,add,replace操作此key

          计数命令

          incr key num增加指定key的值的大小,num必须是数字 decr key num减少指定key的值的大小,num必须是数字

          统计命令

          stats统计memcached的运行信息

            STAT pid 46673              #进程ID
            STAT uptime 25336 #服务器已运行秒数
            STAT time 1494173893 #服务器当前unix时间戳
            STAT version 1.4.13 #memcached版本号
            STAT libevent 1.4.13-stable #libevent版本
            STAT pointer_size 64 #操作系统位数,64位
            STAT rusage_user .642902 #进程累计用户时间
            STAT rusage_system .303953 #进程累计系统时间
            STAT curr_connections 10 #当前打开连接数
            STAT total_connections 25 #memcached运行以来连接总数
            STAT connection_structures 11 #memcached分配的连接结构数
            STAT reserved_fds 20 #内部使用的FD数
            STAT cmd_get 7 #执行get命令总数
            STAT cmd_set 3 #执行set命令总数
            STAT cmd_flush #执行flush_all命令总数
            STAT cmd_touch #touch命令请求总数
            STAT get_hits 3 #get命中次数
            STAT get_misses 4 #get未命中次数
            STAT delete_misses #delete未命中次数
            STAT delete_hits 1 #delete命中次数
            STAT incr_misses #incr未命中次数
            STAT incr_hits #incr命中次数
            STAT decr_misses #decr未命中次数
            STAT decr_hits #decr命中次数
            STAT cas_misses #cas未命中次数
            STAT cas_hits #cas命中次数
            STAT cas_badval #使用擦拭次数
            STAT touch_hits #touch命中次数
            STAT touch_misses #touch未命中次数
            STAT auth_cmds #认证命令处理次数
            STAT auth_errors #认证失败数目
            STAT bytes_read 358 #读取字节总数
            STAT bytes_written 160 #写入字节总数
            STAT limit_maxbytes 16777216#分配的内存总数(字节)
            STAT accepting_conns 1 #是否已达到连接大数 1-达到 0-未达到
            STAT listen_disabled_num #统计当前服务器连接数曾经到达大连接数的次数,这个数应该为0或者趋近于0,如果这个数不断增长,就要小心了
            STAT threads 4 #当前MemCache总进程数
            STAT conn_yields #连接操作主动放弃数目
            STAT hash_power_level 16 #hash表等级
            STAT hash_bytes 524288 #当前hash表大小
            STAT hash_is_expanding #hash表正在扩展
            STAT expired_unfetched #已过期但未获取大对象数目
            STAT evicted_unfetched #一驱逐但未获取大对象数目
            STAT bytes 166 #当前存储占用字节数
            STAT curr_items 2 #当前存储的数据总个数
            STAT total_items 3 #启动以来存储的数据总数
            STAT evictions #LRU释放的对象数目
            STAT reclaimed #已过期的数据数目来存储新数据的数目

            stats items列出所有key

              STAT items:1:number 4                #该slab中对象数(不包含过期对象)
              STAT items:1:age 1941 #LRU队列中老对象的过期时间
              STAT items:1:evicted 0 #LRU释放对象数
              STAT items:1:evicted_nonzero 0 #设置了非0时间的LRU释放对象数
              STAT items:1:evicted_time 0 #后一次LRU释放的对象存在时间
              STAT items:1:outofmemory 0 #不能存储对象次数
              STAT items:1:tailrepairs 0 #修复slabs次数
              STAT items:1:reclaimed 0 #使用过期对象空间存储对象次数
              STAT items:1:expired_unfetched 0 #已过期但未获取的对象数目
              STAT items:1:evicted_unfetched 0 #已驱逐但未获取的对象数目

              其他命令:flush_all清空所有的存储对象 缓存的命中率=命中次数/(命中次数+未命中次数)*

              来源 https://www.modb.pro/db/141964

              相关文章