有关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中没有观察到这种现象。
 

相关内容

    暂无相关文章