小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Memcached常用命令及使用說明

 java_laq小館 2014-05-22

Memcached常用命令及使用說明

一、存儲(chǔ)命令

存儲(chǔ)命令的格式:

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

參數(shù)說明如下:

<command name> set/add/replace
<key> 查找關(guān)鍵字
<flags> 客戶機(jī)使用它存儲(chǔ)關(guān)于鍵值對(duì)的額外信息
<exptime> 該數(shù)據(jù)的存活時(shí)間,0表示永遠(yuǎn)
<bytes> 存儲(chǔ)字節(jié)數(shù)
<data block> 存儲(chǔ)的數(shù)據(jù)塊(可直接理解為key-value結(jié)構(gòu)中的value)

1、添加

(1)、無論如何都存儲(chǔ)的set

set

這個(gè)set的命令在memcached中的使用頻率極高。set命令不但可以簡單添加,如果set的key已經(jīng)存在,該命令可以更新該key所對(duì)應(yīng)的原來的數(shù)據(jù),也就是實(shí)現(xiàn)更新的作用。

可以通過“get 鍵名”的方式查看添加進(jìn)去的記錄:

set_get

如你所知,我們也可以通過delete命令刪除掉,然后重新添加。

delete

(2)、只有數(shù)據(jù)不存在時(shí)進(jìn)行添加的add

add

(3)、只有數(shù)據(jù)存在時(shí)進(jìn)行替換的replace

replace

 

2、刪除

delete

可以看到,刪除已存在的鍵值和不存在的記錄可以返回不同的結(jié)果。

 

二、讀取命令

1、get

get命令的key可以表示一個(gè)或者多個(gè)鍵,鍵之間以空格隔開

get

2、gets

gets

可以看到,gets命令比普通的get命令多返回了一個(gè)數(shù)字(上圖中為13)。這個(gè)數(shù)字可以檢查數(shù)據(jù)是否發(fā)生改變。當(dāng)key對(duì)應(yīng)的數(shù)據(jù)改變時(shí),這個(gè)多返回的數(shù)字也會(huì)改變。

3、cas

cas即checked and set的意思,只有當(dāng)最后一個(gè)參數(shù)和gets所獲取的參數(shù)匹配時(shí)才能存儲(chǔ),否則返回“EXISTS”。

cas

 

三、狀態(tài)命令

1、stats

stats

 

2、stats items

statsitems
執(zhí)行stats items,可以看到STAT items行,如果memcached存儲(chǔ)內(nèi)容很多,那么這里也會(huì)列出很多的STAT items行。

 

3、stats cachedump slab_id limit_num

我們執(zhí)行stats cachedump 1 0 命令效果如下:

statscachedump

這里slab_id為1,是由2中的stats items返回的結(jié)果(STAT items后面的數(shù)字)決定的;limit_num看起來好像是返回多少條記錄,猜的一點(diǎn)不錯(cuò), 不過0表示顯示出所有記錄,而n(n>0)就表示顯示n條記錄,如果n超過該slab下的所有記錄,則結(jié)果和0返回的結(jié)果一致。

statscachedump1
通過stats items、stats cachedump slab_id limit_num配合get命令可以遍歷memcached的記錄。

 

4、其他stats命令

如stats slabs,stats sizes,stats reset等等使用也比較常見。

statsother

 

四、其他常見命令

1、append

append

在現(xiàn)有的緩存數(shù)據(jù)添加緩存數(shù)據(jù),如現(xiàn)有緩存的key不存在服務(wù)器響應(yīng)為NOT_STORED。

 

2、prepend

和append非常類似,但它的作用是在現(xiàn)有的緩存數(shù)據(jù)添加緩存數(shù)據(jù)。

prepend

 

3、flush_all

flush_all

該命令有一個(gè)可選的數(shù)字參數(shù)。它總是執(zhí)行成功,服務(wù)器會(huì)發(fā)送 “OK\r\n” 回應(yīng)。它的效果是使已經(jīng)存在的項(xiàng)目立即失效(缺省),或在指定的時(shí)間后。此后執(zhí)行取回命令,將不會(huì)有任何內(nèi)容返回(除非重新存儲(chǔ)同樣的鍵名)。 flush_all 實(shí)際上沒有立即釋放項(xiàng)目所占用的內(nèi)存,而是在隨后陸續(xù)有新的項(xiàng)目被儲(chǔ)存時(shí)執(zhí)行(這是由memcached的懶惰檢測(cè)和刪除機(jī)制決定的)。

flush_all 效果是它導(dǎo)致所有更新時(shí)間早于 flush_all 所設(shè)定時(shí)間的項(xiàng)目,在被執(zhí)行取回命令時(shí)命令被忽略。

4、其他命令

memcached還有很多命令,比如對(duì)于存儲(chǔ)為數(shù)字型的可以通過incr/decr命令進(jìn)行增減操作等等,這里只列出開發(fā)和運(yùn)維中經(jīng)常使用的命令,其他的不再一一舉例說明。

 

補(bǔ)充一則:簡單認(rèn)識(shí).net framework中的幾種緩存

web站點(diǎn)中緩存的重要性毋庸置疑。我想很多asp.net開發(fā)人員在開發(fā)web應(yīng)用系統(tǒng)的時(shí)候優(yōu)先考慮使用的緩存并不是第三方緩存解決方案(比如 分布式緩存memcached、redis等等),而應(yīng)該是.net framework已經(jīng)提供的多種緩存解決方案。下面結(jié)合自己的開發(fā)經(jīng)驗(yàn)談?wù)剬?duì).net framework中緩存的認(rèn)識(shí)。

1、System.Web.Caching.Cache

估計(jì)大部分做過asp.net開發(fā)的人都用過這個(gè)命名空間下的緩存,我們可以直接使用HttpContext.Current.Cache實(shí)例而不 用實(shí)例化。當(dāng)然這個(gè)命名空間下的Cache類是允許您實(shí)例化的,需要定制自己的緩存系統(tǒng)的當(dāng)然可以完全自己控制如何初始化這個(gè)類。我在園子里看到過有很多 文章介紹Cache的CRUD輔助類庫大多數(shù)都是針對(duì)System.Web.Caching.Cache。

需要說明的是,我們還可以通過該命名空間下的HttpRuntime.Cache實(shí)現(xiàn)web、控制臺(tái)、winform等不同表現(xiàn)形式下的緩存,而且 完全無需自己實(shí)例化。HttpRuntime.Cache是之前個(gè)人開發(fā)中使用比較多的一個(gè)類,現(xiàn)在比較偏愛.net framework4.0中的增強(qiáng)型的緩存類MemoryCache。

 

2、Output Cache

眾所周知,輸出緩存主要分頁面輸出緩存和頁面部分緩存。說白了,就是緩存整個(gè)頁面的html或者部分html,本來沒什么值得討論的,但是最近看到dudu的這篇博客才恍然發(fā)現(xiàn),想不到使用它還真是大有講究,我以前怎么就沒有發(fā)現(xiàn)這個(gè)問題呢?看來發(fā)現(xiàn)問題和解決問題的能力同樣重要,有時(shí)候前者甚至更重要啊。

 

3、System.Runtime.Caching

現(xiàn)在個(gè)人開發(fā)中使用最多的類MemoryCache出自這個(gè)命名空間,使用前需要引用using System.Runtime.Caching。MemoryCache繼承自O(shè)bjectCache, IEnumerable, IDisposable,其中ObjectCache是個(gè)抽象類。用過MemoryCache的人都知道,這個(gè)MemoryCache有一個(gè)屬性叫 Default,通??梢韵裣旅孢@樣使用:

private static ObjectCache memCache = MemoryCache.Default;

當(dāng)然我們也完全可以通過public MemoryCache(string name, NameValueCollection config = null)構(gòu)造函數(shù)初始化緩存對(duì)象。

接著我們可以在web.config文件中配置每個(gè)MemoryCache實(shí)例運(yùn)行的內(nèi)存使用配額方案和配額檢查周期,下面示例參考MSDN

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

這些配置意義在于可以明確指定每個(gè)MemoryCache實(shí)例運(yùn)行的內(nèi)存使用配額方案和配額檢查周期。比如我們可以通過配置來按需更改 MemoryCache.Default實(shí)例的內(nèi)存配額(不知道緩存可用最大內(nèi)存是多少,可能還是傳說中的800M左右)。緩存過期策略與其它的緩存框架 大同小異,與System.Web.Caching.Cache的不同只是名稱不叫CacheDependency,而叫ChangeMonitor,并且提供了基于文件和目錄的緩存依賴策略。關(guān)于緩存過期策略也比較有探討的必要,不過個(gè)人開發(fā)中比較偏重于數(shù)據(jù)緩存和替換,目前還沒有接觸和使用過比較完美的過期策略解決方案。

 

參考:

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

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多