溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Memcached常用的命令以及使用說明

發(fā)布時間:2021-09-17 17:30:34 來源:億速云 閱讀:199 作者:chen 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“Memcached常用的命令以及使用說明”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

存儲命令的格式:
<command name> <key> <flags> <exptime> <bytes>
<data block>
參數(shù)說明如下:

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

1、添加
(1)、無論如何都存儲的setMemcached常用的命令以及使用說明

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

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

Memcached常用的命令以及使用說明

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

Memcached常用的命令以及使用說明

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

Memcached常用的命令以及使用說明

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

Memcached常用的命令以及使用說明

 2、刪除

Memcached常用的命令以及使用說明

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

二、讀取命令1、get

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

Memcached常用的命令以及使用說明
2、gets Memcached常用的命令以及使用說明

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

3、cas
cas即checked and set的意思,只有當(dāng)最后一個參數(shù)和gets所獲取的參數(shù)匹配時才能存儲,否則返回“EXISTS”。Memcached常用的命令以及使用說明

三、狀態(tài)命令1、stats
Memcached常用的命令以及使用說明
2、stats items Memcached常用的命令以及使用說明
執(zhí)行stats items,可以看到STAT items行,如果memcached存儲內(nèi)容很多,那么這里也會列出很多的STAT items行。

3、stats cachedump slab_id limit_num

我們執(zhí)行stats cachedump 1 0 命令效果如下:Memcached常用的命令以及使用說明這里slab_id為1,是由2中的stats items返回的結(jié)果(STAT items后面的數(shù)字)決定的;limit_num看起來好像是返回多少條記錄,猜的一點(diǎn)不錯, 不過0表示顯示出所有記錄,而n(n>0)就表示顯示n條記錄,如果n超過該slab下的所有記錄,則結(jié)果和0返回的結(jié)果一致。Memcached常用的命令以及使用說明
通過stats items、stats cachedump slab_id limit_num配合get命令可以遍歷memcached的記錄。

4、其他stats命令
如stats slabs,stats sizes,stats reset等等使用也比較常見。Memcached常用的命令以及使用說明

四、其他常見命令
1、append
Memcached常用的命令以及使用說明在現(xiàn)有的緩存數(shù)據(jù)后添加緩存數(shù)據(jù),如現(xiàn)有緩存的key不存在服務(wù)器響應(yīng)為NOT_STORED。

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

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

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

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

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

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

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

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

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

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

復(fù)制代碼 代碼如下:


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


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

“Memcached常用的命令以及使用說明”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI