儲存命令的格式:
參數說明如下:
|
set/add/replace |
|
尋找關鍵字 |
|
客戶機使用它儲存關於索引值對的額外資訊 |
|
該資料的存活時間,0表示永遠 |
|
儲存位元組數 |
|
儲存的資料區塊(可直接理解為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:
複製代碼 代碼如下:
這些配置意義在於可以明確指定每個MemoryCache執行個體啟動並執行記憶體使用量配額方案和配額檢查周期。比如我們可以通過配置來按需更改MemoryCache.Default執行個體的記憶體配額(不知道緩衝可用最大記憶體是多少,可能還是傳說中的800M左右)。緩衝到期策略與其它的緩衝架構大同小異,與System.Web.Caching.Cache的不同只是名稱不叫CacheDependency,而叫ChangeMonitor,並且提供了基於檔案和目錄的緩衝依賴策略。關於緩衝到期策略也比較有探討的必要,不過個人開發中比較偏重於資料緩衝和替換,目前還沒有接觸和使用過比較完美的到期策略解決方案。
http://www.bkjia.com/PHPjc/327884.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/327884.htmlTechArticle儲存命令的格式: command name key flags exptime bytes data block 參數說明如下: command name set/add/replace key 尋找關鍵字 flags 客戶機使用它儲存關於鍵...