有關memcached使用的幾個限制

有關memcached使用的幾個限制
 
memcached自身有幾個比較重要的限制,尤其是其中的過期時間限制,得小心,否則很容易踩到地雷:
  www.2cto.com  
1)單個緩存值大小限制:
memcached單個緩存值限制爲1M(1000000bytes),超過這個限制的時候會出如下錯誤:
ValueError: Values may not be more than 1000000 bytes in length; received 2000000 bytes
 
2)key長度限制:
memcache的keys限制爲250 bytes,超過這個長度會報錯:
ValueError: Keys may not be more than 250 bytes in length, received 14670 bytes
  www.2cto.com  
3)expire過期時間限制:
過期時間設置有兩種方式:
1、可使用 unix 時間戳格式,即距離1970.01.01 00:00:00的時間偏移量(單位爲秒)
2、距離當前時間的時間間隔 (單位也爲秒)
 
設爲 距離當前時間的時間間隔 時不能大於 2592000(30天),如果時間值大於2592000 ,那麼memcached會把時間理解爲unix時間戳格式也就是距離1970.01.01的秒數偏移量。0 爲永不過期。
 
這個問題要特別注意,當我們設置的時間間隔大於 2592000 ,例如2592010,寫進去的數據會被認爲是unix時間戳格式,數據剛寫進去已經過期,相當於導致數據寫不進去,而更糟糕的是對於這種情況memcached服務端和客戶端驅動都不會拋出exception或者打印任何警告信息,因爲對memcached來說這樣的時間值也是合理的。
P.S. 該expire的限制某似是從memcached 1.2.6以後纔有體現,之前的版本如1.2.1中沒有觀察到這種現象。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章