Memcached常用命令及使用說明一、存儲(chǔ)命令存儲(chǔ)命令的格式:
參數(shù)說明如下:
1、添加(1)、無論如何都存儲(chǔ)的set 這個(gè)set的命令在memcached中的使用頻率極高。set命令不但可以簡單添加,如果set的key已經(jīng)存在,該命令可以更新該key所對(duì)應(yīng)的原來的數(shù)據(jù),也就是實(shí)現(xiàn)更新的作用。 可以通過“get 鍵名”的方式查看添加進(jìn)去的記錄: 如你所知,我們也可以通過delete命令刪除掉,然后重新添加。 (2)、只有數(shù)據(jù)不存在時(shí)進(jìn)行添加的add (3)、只有數(shù)據(jù)存在時(shí)進(jìn)行替換的replace 2、刪除可以看到,刪除已存在的鍵值和不存在的記錄可以返回不同的結(jié)果。
二、讀取命令1、getget命令的key可以表示一個(gè)或者多個(gè)鍵,鍵之間以空格隔開 2、gets可以看到,gets命令比普通的get命令多返回了一個(gè)數(shù)字(上圖中為13)。這個(gè)數(shù)字可以檢查數(shù)據(jù)是否發(fā)生改變。當(dāng)key對(duì)應(yīng)的數(shù)據(jù)改變時(shí),這個(gè)多返回的數(shù)字也會(huì)改變。 3、cascas即checked and set的意思,只有當(dāng)最后一個(gè)參數(shù)和gets所獲取的參數(shù)匹配時(shí)才能存儲(chǔ),否則返回“EXISTS”。
三、狀態(tài)命令1、stats
2、stats items
3、stats cachedump slab_id limit_num我們執(zhí)行stats cachedump 1 0 命令效果如下: 這里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é)果一致。
4、其他stats命令如stats slabs,stats sizes,stats reset等等使用也比較常見。
四、其他常見命令1、append在現(xiàn)有的緩存數(shù)據(jù)后添加緩存數(shù)據(jù),如現(xiàn)有緩存的key不存在服務(wù)器響應(yīng)為NOT_STORED。
2、prepend和append非常類似,但它的作用是在現(xiàn)有的緩存數(shù)據(jù)前添加緩存數(shù)據(jù)。
3、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 |
|
|