zoukankan      html  css  js  c++  java
  • memcached命令

    Memcached安装,  http://www.cnblogs.com/zgx/archive/2011/08/10/2134097.html

    1. memcached是以守候程序的方式运行与一个或者多个服务器,随时等待客户端的链接,通过启动memcache服务器端,配置相应的ip、端口内存大小等参数,客户端可通过指定的服务器端ip,将数据以key-value的方式存储。

    2.memcached的两阶段哈希

    客户端存取数据是,首先参考节点列表计算出key的哈希值(阶段一哈希),进而选中一个节点,客户端将请求发送给选中的节点,然后Memcached节点通过一个内部的哈希算法(阶段二哈希),进行真正的数据(item)存取

    3. Memcache的服务器客户端通信并不适用复杂的xml等格式,而使用简单的基于文本行的协议,因此通过telnet也能在Memcached上保存数据,取得数据。

    4.标准协议:memcached所有的标准协议包含在对item执行命令过程中,一个item包含两行:

      第一行:key  flag  expirationTime  Bytes

              key:key用于查找缓存值

              Flags:一个32位的标志值,客户机使用它存储关于键值对的额外信息(一般标识类型)

              Expiration time:在缓存中保存键值对的时长(以秒位单位,0表示永远(30天)(关了也                     就没了,因为在内存中))

              Bytes:在缓存中存储的字节数

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

    add k1 1 0 2

    stored

    4. noreply:可以在命令的第一行后面加入noreply,以避免在处理交互命令的时候,等待服务端返回  

    add  k3 1 60 2 noreply

    11

    //没有stored

     5. memcached写入值

    命令有:set,add,replace,append,prepend,cas

    ①set:用于向缓存中添加新的键值对,如果键已经存在,则之前的值将被替换

    ②add:仅当缓存中不存在键时,add命令才会向缓存中添加一个键值对,如果缓存中已经存在键,则之前的值将仍然保持,服务器响应NOT_STORED

    ③replace:仅当键已经存在时,replace命令才会替换缓存中的键,如果缓存不存在键,服务器响应not_stored

    ④append:是在现有缓存中数据后追加数据,如果key中没有,则返回not_stored

    ⑤prepend:前追加

    ⑥cas(check and set):检查和更新,只有从你读取的数据后,别人没有更新这个数据,才能够正确保存。就是版本控制,通常和gets配合使用,缓存中没有key的话,就会返回not_found

    -------------------------------
    
    gets k1
    
    value  k1 0  4  8    //8指版本号
    
    23
    
    ---------------------------------------
    
    cas  k1  0  4  7    //7表示版本号,因为最新版本是8,所以修改失败,返回exits
    
    5
    
    exits
    
    -----------------------
    
    cas  k1  0  4  9   //9表示版本号,因为最新版本是8,只有和最新版本一样才允许修改,修改之后版本号为9,所以修改失败,返回exits
    
    5
    
    exits
    
    -----------------------
    

      

    6. get:获取相关数据   gets:获取数据+版本号

    7. 删除命令:delete 

      delete k1

      DELETE

    8.incr/decr命令:如果缓存数据中存储的是数字形式的字符串,则可以使用incr/decr 对数据进行递增和递减操作,操作后的值不会为负数。

    9. stats命令:查询服务器的运行状态和其他内部数据,包含如下这些:

    ①pid:服务器进程id

    ②uptime:服务器运行时间,单位秒

    ③time:服务器当前unix时间

    ④version:服务器的版本号

    ⑤libevent:libevent的版本

    ⑥pointer_size:服务器操作系统位数

    ⑦rusage_user:该进程累计的用户时间         

    ⑧rusage_system:该进程累计的系统时间                 分析cpu占用是否高

    ⑨curr_connections:当前连接数

    ⑩total_connections:服务器启动后总连接数             分析连接数是否过多

    ⑪connection_structures:服务器分配的连接结构的数量

    ⑫reserved_fds:内部使用的misc fds数量

    ⑬cmd_get:获取请求的数量

    ⑭get_hits:获取成功的总次数,命中次数

    ⑮get_misses:获取失败的总次数                             分析命中率 

    ⑯cmd_set:存储请求数量

    ⑰cmd_flush:flush请求的数量

    ⑱cmd_touch:touch请求的数量

    ⑲delete_misses:删除失败次数

    ⑳delete_hits:删除命中

    ⑪bytes:已用缓存空间

    ⑫bytes_read:总共获取的数据量

    ⑬bytes_written:总写入数据量             //分析字节数流量,分析空间大小

    ⑭limit_maxbytes:总允许写入的数据量,和分配的内存有关

    ⑯accepting_conns:允许的总连接数

    curr_items:当前缓存item数量

    total_items:从服务启动后,总的存储缓存item的数量

    evictions:通过删除item释放内存的次数                                  分析对象LRU频率

    隐含的关系:

    1. 缓存命中率:get_hits/cmd_get*100%

    2.get_misses的数字加上get_hits应该等于cmd_get

     

    10. stats sizes 命令:输出所有Item的大小和个数,注意:会锁定服务,暂停处理请求

    11. flush_all命令:是内存中所有的item失效,不是真正的释放内存,而是标记为失效,加参数,n秒后

    12.version,版本

    13.stats setting 查看设置

    14.stats_item 数据项统计

    15.stats slabs 区块统计

    16. 

  • 相关阅读:
    模拟+位运算 HDOJ 5491 The Next
    树状数组+二分||线段树 HDOJ 5493 Queue
    线段树(区间合并) HDOJ 3308 LCIS
    双端队列 HDOJ 3530 Subsequence
    BFS HDOJ 1242 Rescue
    Codeforces Round #321 (Div. 2)
    区间专题
    递推DP HDOJ 5459 Jesus Is Here
    补题列表2
    引用与指针的异同-基础篇
  • 原文地址:https://www.cnblogs.com/an5211/p/6764831.html
Copyright © 2011-2022 走看看