一、存储命令

存储命令的格式:

1
2
<command name> <key> <flags> <exptime> <bytes>
<data block>

参数说明如下:

<command name> set/add/replace
<key> 查找关键字
<flags> 客户机使用它存储关于键值对的额外信息
<exptime> 该数据的存活时间,0表示永远
<bytes> 存储字节数
<data block> 存储的数据块(可直接理解为key-value结构中的value)

1、添加

(1)、无论如何都存储的set

这个set的命令在memcached中的使用频率极高。set命令不但可以简单添加,如果set的key已经存在,该命令可以更新该key所对应的原来的数据,也就是实现更新的作用。

可以通过“get 键名”的方式查看添加进去的记录:

如你所知,我们也可以通过delete命令删除掉,然后重新添加。

(2)、只有数据不存在时进行添加的add

(3)、只有数据存在时进行替换的replace

2、删除

可以看到,删除已存在的键值和不存在的记录可以返回不同的结果。

二、读取命令

1、get

get命令的key可以表示一个或者多个键,键之间以空格隔开

2、gets

可以看到,gets命令比普通的get命令多返回了一个数字(上图中为13)。这个数字可以检查数据是否发生改变。当key对应的数据改变时,这个多返回的数字也会改变。

3、cas

cas即checked and set的意思,只有当最后一个参数和gets所获取的参数匹配时才能存储,否则返回“EXISTS”。

三、状态命令

1、stats

2、stats items


执行stats items,可以看到STAT items行,如果memcached存储内容很多,那么这里也会列出很多的STAT items行。

3、stats cachedump slab_id limit_num

我们执行stats cachedump 1 0 命令效果如下:

这里slab_id为1,是由2中的stats items返回的结果(STAT items后面的数字)决定的;limit_num看起来好像是返回多少条记录,猜的一点不错, 不过0表示显示出所有记录,而n(n>0)就表示显示n条记录,如果n超过该slab下的所有记录,则结果和0返回的结果一致。


通过stats items、stats cachedump slab_id limit_num配合get命令可以遍历memcached的记录。

4、其他stats命令

如stats slabs,stats sizes,stats reset等等使用也比较常见。

四、其他常见命令

1、append

在现有的缓存数据后添加缓存数据,如现有缓存的key不存在服务器响应为NOT_STORED。

2、prepend

和append非常类似,但它的作用是在现有的缓存数据前添加缓存数据。

3、flush_all

该命令有一个可选的数字参数。它总是执行成功,服务器会发送 “OK\r\n” 回应。它的效果是使已经存在的项目立即失效(缺省),或在指定的时间后。此后执行取回命令,将不会有任何内容返回(除非重新存储同样的键名)。 flush_all 实际上没有立即释放项目所占用的内存,而是在随后陆续有新的项目被储存时执行(这是由memcached的懒惰检测和删除机制决定的)。

flush_all 效果是它导致所有更新时间早于 flush_all 所设定时间的项目,在被执行取回命令时命令被忽略。

4、其他命令

memcached还有很多命令,比如对于存储为数字型的可以通过incr/decr命令进行增减操作等等,这里只列出开发和运维中经常使用的命令,其他的不再一一举例说明。

补充一则:简单认识.net framework中的几种缓存

web站点中缓存的重要性毋庸置疑。我想很多asp.net开发人员在开发web应用系统的时候优先考虑使用的缓存并不是第三方缓存解决方案(比如分布式缓存memcached、redis等等),而应该是.net framework已经提供的多种缓存解决方案。下面结合自己的开发经验谈谈对.net framework中缓存的认识。

1、System.Web.Caching.Cache

估计大部分做过asp.net开发的人都用过这个命名空间下的缓存,我们可以直接使用HttpContext.Current.Cache实例而不用实例化。当然这个命名空间下的Cache类是允许您实例化的,需要定制自己的缓存系统的当然可以完全自己控制如何初始化这个类。我在园子里看到过有很多文章介绍Cache的CRUD辅助类库大多数都是针对System.Web.Caching.Cache。

需要说明的是,我们还可以通过该命名空间下的HttpRuntime.Cache实现web、控制台、winform等不同表现形式下的缓存,而且完全无需自己实例化。HttpRuntime.Cache是之前个人开发中使用比较多的一个类,现在比较偏爱.net framework4.0中的增强型的缓存类MemoryCache。

2、Output Cache

众所周知,输出缓存主要分页面输出缓存和页面部分缓存。说白了,就是缓存整个页面的html或者部分html,本来没什么值得讨论的,但是最近看到dudu的这篇博客才恍然发现,想不到使用它还真是大有讲究,我以前怎么就没有发现这个问题呢?看来发现问题和解决问题的能力同样重要,有时候前者甚至更重要啊。

3、System.Runtime.Caching

现在个人开发中使用最多的类MemoryCache出自这个命名空间,使用前需要引用using System.Runtime.Caching。MemoryCache继承自ObjectCache, IEnumerable, IDisposable,其中ObjectCache是个抽象类。用过MemoryCache的人都知道,这个MemoryCache有一个属性叫Default,通常可以像下面这样使用:

private static ObjectCache memCache = MemoryCache.Default;

当然我们也完全可以通过public MemoryCache(string name, NameValueCollection config = null)构造函数初始化缓存对象。

接着我们可以在web.config文件中配置每个MemoryCache实例运行的内存使用配额方案和配额检查周期,下面示例参考MSDN

  <system.runtime.caching>
    <memoryCache>
      <namedCaches>
        <add name="Default" cacheMemoryLimitMegabytes="10"  pollingInterval="00:02:00"/>
      </namedCaches>
    </memoryCache>
  </system.runtime.caching>

这些配置意义在于可以明确指定每个MemoryCache实例运行的内存使用配额方案和配额检查周期。比如我们可以通过配置来按需更改MemoryCache.Default实例的内存配额(不知道缓存可用最大内存是多少,可能还是传说中的800M左右)。缓存过期策略与其它的缓存框架大同小异,与System.Web.Caching.Cache的不同只是名称不叫CacheDependency,而叫ChangeMonitor,并且提供了基于文件和目录的缓存依赖策略。关于缓存过期策略也比较有探讨的必要,不过个人开发中比较偏重于数据缓存和替换,目前还没有接触和使用过比较完美的过期策略解决方案。

参考:

http://code.google.com/p/memcached/wiki/NewCommands

http://msdn.microsoft.com/zh-cn/library/system.runtime.caching.memorycache.aspx

http://www.cnblogs.com/dudu/archive/2011/11/03/outputcache_Bug_vary.html

http://msdn.microsoft.com/zh-cn/library/system.web.caching.cache(v=VS.100).aspx

作者:Jeff Wong 
出处:http://jeffwongishandsome.cnblogs.com/ 
本文版权归作者和博客园共有,欢迎围观转载。转载时请您务必在文章明显位置给出原文链接,谢谢您的合作。

Memcached常用命令及使用说明的更多相关文章

  1. memcached 常用命令及使用说明

    1.启动Memcache 常用参数 -p <num> 设置TCP端口号(默认设置为: ) -U <num> UDP监听端口(默认: , 时关闭) -l <ip_addr& ...

  2. Memcached常用命令及使用说明(转)

    一.存储命令 存储命令的格式: 1 2 <command name> <key> <flags> <exptime> <bytes> < ...

  3. Memcached总结三:Memcached常用命令及使用说明

    一.存储命令 存储命令的格式: 1 2 <command name> <key> <flags> <exptime> <bytes> < ...

  4. 转:Memcached常用命令及使用说明

    一.存储命令 存储命令的格式: 1 2 <command name> <key> <flags> <exptime> <bytes> < ...

  5. Memcached常用命令及使用说明——netcat

    数据存储(假设key为test,value为12345) printf "set test 0 0 5\r\n12345\r\n" | nc 127.0.0.1 12000 STO ...

  6. memcached常用命令

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt104 一.Memcache面向对象的常用接口包括:Memcache::con ...

  7. memcached的常用命令

    memcached 常用命令及使用说明   1.启动Memcache 常用参数 -p <num> 设置TCP端口号(默认设置为: 11211) -U <num> UDP监听端口 ...

  8. memecached常用命令

    memcached 常用命令及使用说明 1.启动Memcache 常用参数 -p <num> 设置TCP端口号(默认设置为: 11211) -U <num> UDP监听端口(默 ...

  9. memcached的安装、常用命令以及在实际开发中的案例

    Memcached注意缺乏安全认证以及安全管制需要将Memcached服务器放置在防火墙(iptables)之后 Linux平台 (CentOS)安装Memcached 安装依赖yum -y inst ...

随机推荐

  1. jQuery控制TR的显示隐藏

    网上有很多,这里介绍三种: 第一种方法,就是使用id,这个方法可以在生成html的时候动态设置tr的id,也是用得最多最简单的一种,如下: <table> <tr><td ...

  2. sql分类及基本sql操作,校对规则(mysql学习笔记二)

    sql针对操作对象分为不同语言 数据操作(管理)语言 DML或者将其细分为 ( 查询  DQL 管理(增,删,改)  DML) 数据定义语言(对保存数据的格式进行定义) DDL 数据库控制语言(针对数 ...

  3. android里面线程睡眠事件使用方法

    SystemClock.sleep(时间); 不用Thread.sleep()的原因:要抛异常,占用资源

  4. setTimeOut(),和setInterVal()调用函数加不加括号!!!

    直接在ready中调用其他方法,会提示缺少对象的错误,解决方法如下: 方法1. 应用jQuery的扩展可以解决这个问题. $(document).ready(function(){ $.extend( ...

  5. python杂记-4(迭代器&生成器)

    #!/usr/bin/env python# -*- coding: utf-8 -*-#1.迭代器&生成器#生成器#正确的方法是使用for循环,因为generator也是可迭代对象:g = ...

  6. android 中单选和复选框监听操作

    单选按钮RadioGroup.复选框CheckBox都有OnCheckedChangeListener事件,我们一起了解一下. package com.genwoxue.oncheckedchange ...

  7. C 基于UDP实现一个简易的聊天室

    引言 本文是围绕Linux udp api 构建一个简易的多人聊天室.重点看思路,帮助我们加深 对udp开发中一些api了解.相对而言udp socket开发相比tcp socket开发注意的细节要少 ...

  8. spring与mysql整合数据源的配置

    需要解决两点,数据源的配置交给spring完成,事务管理交个spring来管理. <context:property-placeholder location="classpath:c ...

  9. JS对文本框值的判断

    JS判断只能是数字和小数点(摘录自其它资料,在此发表只为个人以后使用查找方便) 1.文本框只能输入数字(不包括小数点) <input onkeyup="this.value=this. ...

  10. DataReader 链接关闭解惑篇

    不管是啥xxDataReader,都是继承DataReader实现的,所以是有共性的,因此标题就以DataReader为题了. 情况一:DataReader 默认链接不关闭 static void M ...