• memcache常用操作


    CommandDescriptionExample
    get 读取键值 get mykey
    set 设置新键值 set mykey 0 60 5
    add 新增键值 add newkey 0 60 5
    replace 替换现有值 replace key 0 60 5
    append 末尾添加值 append key 0 60 15
    prepend 头部添加值 prepend key 0 60 15
    incr 递增数值 incr mykey 2
    decr 递减数值 decr mykey 5
    delete 删除键 delete mykey
    flush_all 清除所有数据 flush_all
    清除n秒内的数据 flush_all 900
    stats 打印所有状态信息 stats
    打印内存信息 stats slabs
    打印内存信息 stats malloc
    高级信息 stats items
      stats detail
      stats sizes
    重置状态 stats reset
    version 打印服务器(memcached)版本 version
    verbosity 日志级别 verbosity
    quit 退出telnet控制台 quit

    1.telnet请求命令格式

    <command name> <key> <flags> <exptime> <bytes> <data block>
    a) <command name> 可以是”set”, “add”, “replace”。
    “set”表示按照相应的<key>存储该数据,没有的时候增加,有的覆盖。
    “add”表示按照相应的<key>添加该数据,但是如果该<key>已经存在则会操作失败。
    “replace”表示按照相应的<key>替换数据,但是如果该<key>不存在则操作失败

    b) <key> 客户端需要保存数据的key。

    c) <flags> 是一个16位的无符号的整数(以十进制的方式表示)。
    该标志将和需要存储的数据一起存储,并在客户端get数据时返回。
    客户可以将此标志用做特殊用途,此标志对服务器来说是不透明的。

    d) <exptime> 过期的时间。
    若为0表示存储的数据永远不过时(但可被服务器算法:LRU 等替换)。
    如果非0(unix时间或者距离此时的秒数),当过期后,服务器可以保证用户得不到该数据(以服务器时间为标准)。

    e) <bytes> 需要存储的字节数(不包含最后的” ”),当用户希望存储空数据时,<bytes>可以为0

    f) 最后客户端需要加上” ”作为”命令头”的结束标志。
    <data block>

    紧接着”命令头”结束之后就要发送数据块(即希望存储的数据内容),最后加上” ”作为此次通讯的结束。

    2. telnet响应命令

    结果响应:reply
    当以上数据发送结束之后,服务器将返回一个应答。可能有如下的情况:

    a) “STORED ”:表示存储成功
    b) “NOT_STORED ” : 表示存储失败,但是该失败不是由于错误。
    通常这是由于”add”或者”replace”命令本身的要求所引起的,或者该项在删除队列之中。

    如: set key 33 0 4
    ffff

    3.获取/检查KeyValue
    get <key>*
    a) <key>* 表示一个或者多个key(以空格分开)
    b) “ ” 命令头的结束

    结果响应:reply
    服务器端将返回0个或者多个的数据项。每个数据项都是由一个文本行和一个数据块组成。当所有的数据项都接收完毕将收到”END ”
    每一项的数据结构:
    VALUE <key> <flags> <bytes>
    <data block>

    a) <key> 希望得到存储数据的key
    b) <falg> 发送set命令时设置的标志项
    c) <bytes> 发送数据块的长度(不包含” ”)
    d) “ ” 文本行的结束标志
    e) <data block> 希望接收的数据项。
    f) “ ” 接收一个数据项的结束标志。

    如果有些key出现在get命令行中但是没有返回相应的数据,这意味着服务器中不存在这些项,这些项过时了,或者被删除了
    如:get aa
    VALUE aa 33 4
    ffff
    END

    4.删除KeyValue:
    delete <key> <time>

    a) <key> 需要被删除数据的key
    b) <time> 客户端希望服务器将该数据删除的时间(unix时间或者从现在开始的秒数)
    c) “ ” 命令头的结束

    5.检查Memcache服务器状态:
    stats
    在这里可以看到memcache的获取次数,当前连接数,写入次数,已经命中率等;

    pid : 进程id
    uptime :总的运行时间,秒数
    time : 当前时间
    version : 版本号
    ……
    curr_items : 当前缓存中的KeyValue数量
    total_items : 曾经总共经过缓存的KeyValue数量
    bytes : 所有的缓存使用的内存量
    curr_connections 当前连接数
    ….
    cmd_get : 总获取次数
    cmd_set : 总的写入次数
    get_hits : 总的命中次数
    miss_hits :  获取失败次数
    …..
    bytes_read : 总共读取的流量字节数
    bytes_written : 总的写入流量字节
    limit_maxbytes : 最大允许使用的内存量,字节

    6.高级缓存细节查看方法:
    stats reset
    清空统计数据

    stats malloc
    显示内存分配数据

    stats cachedump slab_id limit_num
    显示某个slab中的前limit_num个key列表,显示格式如下
    ITEM key_name [ value_length b; expire_time|access_time s]
    其中,memcached 1.2.2及以前版本显示的是  访问时间(timestamp)
    1.2.4以上版本,包括1.2.4显示 过期时间(timestamp)
    如果是永不过期的key,expire_time会显示为服务器启动的时间

    stats cachedump 7 2
    ITEM copy_test1 [250 b; 1207795754 s]
    ITEM copy_test [248 b; 1207793649 s]

    stats slabs
    显示各个slab的信息,包括chunk的大小、数目、使用情况等

    stats items
    显示各个slab中item的数目和最老item的年龄(最后一次访问距离现在的秒数)

    stats detail [on|off|dump]
    设置或者显示详细操作记录

    参数为on,打开详细操作记录
    参数为off,关闭详细操作记录
    参数为dump,显示详细操作记录(每一个键值get、set、hit、del的次数)

    7.清空所有键值
    flush_all
    注:flush并不会将items删除,只是将所有的items标记为expired,因此这时memcache依旧占用所有内存。

    8、退出
    quit

    memcache telnet 维护小结

               memcache作为一款优秀的进程外缓存,常常被运用于高并发系统架构中。这里主要谈谈怎么通过telnet工具,查看memcache运行状况并对其key进行管理维护。假设memcache安装目录:/usr/local/memcached

              
    1、启动memcache

    [root@localhost ~]# /usr/local/memcached/bin/memcached -d -m 512  -u root -l 192.168.119.70 -p 12000 -c 512 -P /usr/local/memcached/memcached.pid
    

    启动参数详解
     -d:以守护进程方式启动。如果该参数没有指定,当按ctrl+c命令结束,memcache自动关闭
     -m:分配给memcache使用的最大内存数 单位是m,默认是64m
     -u: 指定运行memcache的用户
     -l: 指定监听的ip地址
     -p: 指定监听的tcp端口号,可以通过-u指定udp端口.默认是11211
     -c: 最大并发连接数
     -P: 报错进程id的文件
     memcache 启动之后,我们就可以通过telnet连接memcache,对其进行简单操作管理。

    2、telnet连接memcache

    [root@localhost ~]# telnet 192.168.119.70 12000 
    Trying 192.168.119.70...
    Connected to 192.168.119.70 (192.168.119.70).
    Escape character is '^]'. 
    
    

     连接成功之后,即可对memcache进行操作管理了,常用的命令有:

    Ⅰ、添加修改

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

           <command>:add, set或 replace

           <key> :缓存的名字

           <flag>:16位无符号整数,和key要存储的数据一起存储,并在程序get缓存时,返回。

          <exptime>:过去时间,0 表示永远不过期,如果非零,表示unix时间或距此秒数

           <bytes>:存储数据的字节数

            : 表示换行回车

            命令结果:

                    STORED :表示成功

                    NOT_STORED : 表示失败 

    a)、添加缓存

    add id 1 0 4
    1234
    STORED
    
    

             如果key已经存在,则会添加失败。

    b)、修改缓存

    replace id 1 0 4
    3456
    STORED

         key存在时,成功;不存在时,失败。

    c)、设置缓存

    set id 1 0 4
    2345
    STORED

        key不存在时,添加【add】;已存在时,替换【replace】。

    Ⅱ、读取

           命令格式:get <key>+

           <key>+:表示一个或多个key,多个key时,用空格隔开

    a)、读取单个key的缓存

    get id
    VALUE id 1 4
    1234
    END

     b)、读取多个key的缓存

    get id name
    VALUE id 1 4
    3456
    VALUE name 1 3
    jim
    END
    

    Ⅲ、删除

    命令格式:delete <key>

    <key>:要删除的key

    删除id

    delete id 
    DELETED

    Ⅳ、清空所有缓存

    命令格式:flush_all

    flush_all
    OK

    Ⅴ、查看缓存服务器状态

    命令:stats

    stats
    STAT pid 2711     //进程id
    STAT uptime 2453  //总的运行时间,单位描述
    STAT time 1344856333  //当前时间
    STAT version 1.4.0 //版本
    STAT pointer_size 32    //服务器指针位数,一般32位操作系统是32
    STAT rusage_user 0.002999  //进程的累计用户时间 
    STAT rusage_system 1.277805  //进程的累计系统事件
    STAT curr_connections 1  //当前连接数
    STAT total_connections 11  //服务器启动后,总连接数
    STAT connection_structures 11  //连接结构的数量
    STAT cmd_get 17   //总获取次数
    STAT cmd_set 1  //总写入次数
    STAT cmd_flush 1   //总的的清空次数
    STAT get_hits 1  //总的命中次数
    STAT get_misses 7   //获取没有命中次数
    STAT delete_misses //删除没有命中次数
    STAT delete_hits 4   //删除命中次数
    STAT incr_misses //递增操作没有命中次数 
    STAT incr_hits //递增操作命中次数
    STAT decr_misses //递减操作没有命中的次数
    STAT decr_hits //递减操作命中的次数
    STAT cas_misses //cas设置没有命中次数
    STAT cas_hits //cas命中次数
    STAT cas_badval //cas操作找到key,但版本过期,没有设置成功
    STAT bytes_read 455    //总共获取数据量
    STAT bytes_written 1175  //总共写入数据量
    STAT limit_maxbytes 1048576  //最大允许使用内存,单位字节
    STAT accepting_conns 1    
    STAT listen_disabled_num 0
    STAT threads 5   //当前线程数
    STAT conn_yields 0
    STAT bytes 56      //已用缓存空间
    STAT curr_items 1  //当前缓存的keyvalue数
    STAT total_items 7 //总共缓存的keyvalue数,包括过期删除的
    STAT evictions //通过删除keyvalue,释放内存次数
    END

    Ⅵ、打印版本

    命令:version

    version
    VERSION 1.4.0

    Ⅶ、打印内存信息

    命令:stats slabs

    stats slabs
    STAT 1:chunk_size 80
    STAT 1:chunks_per_page 13107
    STAT 1:total_pages 1
    STAT 1:total_chunks 13107
    STAT 1:used_chunks 1
    STAT 1:free_chunks 1
    STAT 1:free_chunks_end 13105
    STAT 1:get_hits 10
    STAT 1:cmd_set 10
    STAT 1:delete_hits 4
    STAT 1:incr_hits 0
    STAT 1:decr_hits 0
    STAT 1:cas_hits 0
    STAT 1:cas_badval 0
    STAT active_slabs 1
    STAT total_malloced 1048560
    END

    3、退出telnet 

    quit

    memcached telnet相关操作

    elnet localhost 11211
    //保存
    set good 32 0 10
    helloworld
    STORED

    //取回
    gets good
    VALUE good 32 10 10
    helloworld
    END

    //替换
    replace good 32 0 10
    worldhello
    STORED
    get good
    VALUE good 32 10
    worldhello
    END

    //尾部添加
    append good 32 0 5
    after
    STORED
    get good
    VALUE good 32 15
    worldhelloafter
    END

    //头部添加
    prepend good 32 0 6
    before
    STORED
    get good
    VALUE good 32 21
    beforeworldhelloafter
    END

    //删除
    delete good
    DELETED
    get good
    END


    delete good
    NOT_FOUND


    cas good 32 0 10 hel
    helloworld
    EXISTS

    gets good
    VALUE good 32 10 10
    helloworld
    END


    cas bad 32 0 10 good
    worldhello
    NOT_FOUND

    参考文章:

    memcache在telnet下的命令操作 

    memcache telnet 维护总结 

    memcache telnet 使用命令

    memcached全面剖析–PDF总结篇   *值得多次阅读

    关于Memcached的一些事之memcached特征

    Memcached二三事儿

    查看、分析memcached使用状态

  • 相关阅读:
    js 中读取JSON的方法探讨
    git 教程 git.oschina.net
    JS实现页面跳转重定向的几种方式
    AngularJs 学习
    firebug js版
    emmt html生成
    idea sass scss配置
    关于idea激活
    sublime text There are no packages 解决!
    js监听滚动条事件
  • 原文地址:https://www.cnblogs.com/52py/p/11236166.html
Copyright © 2020-2023  润新知