memcache操作

所有操作基于memcached 1.4.15

标准协议

memcached所有的标准协议包含在对item执行命令过程中,一个item包含:
- 一个key
- 一个32位的标志值
- 以秒为单位的失效时间
- 一个64为的CAS值,这个是唯一的数据。CAS是可选的,可以使用”-C”禁止CAS(启动时)

基本操作

存储操作

  • 命令:add set replace append prepend cas

  • 格式:

    command key flag exptime bytes CRLF
    value
参数含义
command以上命令中的任意一个
key缓存名
flag一个16位的无符号的整数(以十进制的方式表示),该标志将和需要存储的数据一起存储,并在客户端get数据时返回,客户可以将此标志用做特殊用途,此标志对服务器来说是不透明的。
exptime失效时间。若为0表示存储的数据永远不过时(LRU 等替换)。如果非0(unix时间或者距离此时的秒数),当过期后,服务器可以保证用户得不到该数据(以服务器时间为标准)。
bytes存储数据的字节数
CRLF回车换行\r\n
value缓存的数据


操作基于Key/Value。

  • 实例:
    add name 0 3600 5
    jason
    STORED
    add sex 0 3600 4
    male
    STORED
  • 返回:

    STORED:成功
    NOT_STORED:失败

  • 解释:

    参数含义
    add添加(存在则操作失败)
    replace替换(不存在则操作失败)
    set设置(不存在则添加,存在则替换)
    append后追加(不存在则操作失败)flag和exptime无效
    prepend前追加(不存在则操作失败)
    cas(check and set)原子更新,请求附带cas值。比较cas值,相等则更新。
    set name 0 3600 5
    jason
    STORED
    gets name
    VALUE name 0 5 17
    jason
    END
    cas name 0 0 5 12 # cas值不相等 12 != 17
    carte
    EXISTS
    cas name 0 0 6 17 # cas值相等
    carter
    STORED

读取操作

  • 命令:get gets

  • 格式

    get key1 #获取单个
    get key1 key2 key3 #获取多个
    gets key1
    gets key1 key2 key3
  • 实例:
    get name sex
    VALUE name 0 5 #VALUE key flag bytes
    jason
    VALUE sex 0 4
    male
    END

    gets name sex
    VALUE name 0 5 11 #VALUE key flag bytes cas值
    jason
    VALUE sex 0 4 12
    male
    END
  • 解释:gets会额外返回一个cas值(类似于版本号),set、replace、prepend、append等操作后都会改变。

删除操作

  • 命令:delete

  • 实例:

    delete name sex
    CLIENT_ERROR bad command line format.  Usage: delete <key> [noreply] #只能删单条数据
    delete name
    DELETED
  • 解释:一次只能删除一个键值对,不过Key不存在则NOT_FOUND

  • 注意:

    直接delete和缓存过期不一样。

    通过stats的curr_items可以发现。

过期:

    add name 0 10 5 #设置一个失效时间为10秒的缓存
    jason
    STORED
    #过了10秒钟后
    get name #第一次获取
    END
    get name #第二次获取
    END
    #上面看的不明显,在memcached -vvv下看发生了什么
    <30 add name 0 10 5
    30: going from conn_parse_cmd to conn_nread
    > NOT FOUND name #添加,没有设置过name
    >30 STORED

    <30 get name
    > FOUND KEY name -nuked by expire #发现name过期了,然后才删除
    >30 END

    <30 get name
    > NOT FOUND name #没有发现
    >30 END

delete:

    add name 0 10 5
    jason
    STORED
    delete name
    DELETED
    get name
    END
    #再来看服务端
    <30 add name 0 10 5
    30: going from conn_parse_cmd to conn_nread
    > NOT FOUND name
    >30 STORED

    <30 delete name
    > FOUND KEY name #发现有name,删除它
    >30 DELETED

    <30 get name
    > NOT FOUND name #没有发现
    >30 END

数值增减操作

  • 命令:incr decr

  • 格式:

    incr key num #增加
    decr key num #减少
  • 实例:
    add money 0 3600 1
    0
    STORED

    incr money 10 #增加
    10 #立刻返回
    decr money 5
    5
  • 解释:
    1. num值过大CLIENT_ERROR invalid numeric delta argument
    2. decr最多把value减少到0。

统计操作

显示版本
    version
显示进程和当前状态等信息
    stats
    STAT pid 16843 #当前进程
    STAT uptime 12270 #运行时间(秒)
    STAT time 1437547780 #当前时间(时间戳)
    STAT version 1.4.15 #memcached版本
    STAT libevent 1.4.13-stable #libevent版本
    STAT pointer_size 32 #操作系统位数(32位)
    STAT rusage_user 0.269958 #进程累计用户时间
    STAT rusage_system 0.507922 #进程累计系统时间
    STAT curr_connections 10 #当前打开的连接
    STAT total_connections 11 #服务启动后总共打开的连接
    STAT connection_structures 11 #服务器分配的连接结构数
    STAT reserved_fds 20
    STAT cmd_get 65 #执行get命令次数
    STAT cmd_set 29 #执行set命令次数
    STAT cmd_flush 0 #执行flush_all命令次数
    STAT cmd_touch 0
    STAT get_hits 40 #get命中次数
    STAT get_misses 25 #get未命中次数
    STAT delete_misses 4 #delete未命中次数
    STAT delete_hits 6 #delete命中次数
    STAT incr_misses 0 #incr未命中次数
    STAT incr_hits 8 #incr命中次数
    STAT decr_misses 0 #decr未命中次数
    STAT decr_hits 3 #decr命中次数
    STAT cas_misses 0 #cas未命中次数
    STAT cas_hits 1 #cas命中次数
    STAT cas_badval 1 #使用擦拭次数
    STAT touch_hits 0
    STAT touch_misses 0
    STAT auth_cmds 0
    STAT auth_errors 0
    STAT bytes_read 2064 #总读取字节总数(请求字节数)
    STAT bytes_written 3352 #总写入字节总数(结果字节数)
    STAT limit_maxbytes 67108864 #分配的内存数(字节)
    STAT accepting_conns 1
    STAT listen_disabled_num 0
    STAT threads 4 #线程数
    STAT conn_yields 0
    STAT hash_power_level 16
    STAT hash_bytes 262144
    STAT hash_is_expanding 0
    STAT bytes 111 #当前服务存储items占用的字节数
    STAT curr_items 2 #当前item个数
    STAT total_items 35 #总共item个数
    STAT expired_unfetched 2
    STAT evicted_unfetched 0
    STAT evictions 0 #为获取空闲内存而删除的items数(分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items)
    STAT reclaimed 3
    END
  • cmd_get/uptime 结果是平均每秒请求缓存的次数——结果值越大,说明Memcached的利用率越高,站点的访问量大,如果太低,用文件系统缓存就可以了,根本不会体现出使用memcached的强大性能。
  • 缓存命中率:get_hits/cms_get * 100%
显示各个slab中item的数目和存储时长(最后一次访问距离现在的秒数)
    stats items
    STAT items:1:number 2
    STAT items:1:age 3261
    STAT items:1:evicted 0
    STAT items:1:evicted_nonzero 0
    STAT items:1:evicted_time 0
    STAT items:1:outofmemory 0
    STAT items:1:tailrepairs 0
    STAT items:1:reclaimed 3
    STAT items:1:expired_unfetched 2
    STAT items:1:evicted_unfetched 0
    END
显示各个slab的信息(包括chunk的大小、数目、使用情况等)
    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 2
    STAT 1:free_chunks 13105
    STAT 1:free_chunks_end 0
    STAT 1:mem_requested 111
    STAT 1:get_hits 40
    STAT 1:cmd_set 29
    STAT 1:delete_hits 6
    STAT 1:incr_hits 8
    STAT 1:decr_hits 3
    STAT 1:cas_hits 1
    STAT 1:cas_badval 1
    STAT 1:touch_hits 0
    STAT active_slabs 1
    STAT total_malloced 1048560
    END
统计所有item大小和个数
    stats sizes
    STAT 64 2
    END
stats cachedump
  • 格式:
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 detail [on|off|dump]
flush_all
清空统计数据
    stats reset

使在内存中所有的item失效。加入参数则表示在N秒后失效所有item。这项操作会立即返回,不会暂停服务器。这个操作并不会真的释放内存空间,而是标志所有的item为失效

相关操作

查看启动memcache服务
netstat -lp | grep memcached
查看进程
ps -ef | grep memcached

参考链接

  1. http://nkcoder.github.io/blog/20140215/memcached-usage-parameters-commands
  2. http://improve.iteye.com/blog/1462037
  3. http://blog.chinaunix.net/uid-20548989-id-1667272.html
  4. http://www.cnblogs.com/springdong/archive/2013/05/20/3089897.html
  5. http://blog.163.com/czg_e/blog/static/46104561201132852042812/
  6. http://blog.csdn.net/jinxingfeng_cn/article/details/24264693
  7. http://blog.chinaunix.net/uid-20548989-id-1667272.html
  8. http://freeloda.blog.51cto.com/2033581/1289806
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值