C++ 技术中心

   :: 首页 :: 联系 ::  :: 管理
  160 Posts :: 0 Stories :: 87 Comments :: 0 Trackbacks

公告

郑重声明:本BLOG所发表的原创文章,作者保留一切权利。必须经过作者本人同意后方可转载,并注名作者(天空)和出处(CppBlog.com)。作者Email:coder@luckcoder.com

留言簿(27)

搜索

  •  

最新随笔

最新评论

评论排行榜

有关memcached使用的几个限制

memcached自身有几个比较重要的限制,尤其是其中的过期时间限制,得小心,否则很容易踩到地雷:

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

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中没有观察到这种现象。
posted on 2012-12-06 16:07 C++技术中心 阅读(2306) 评论(0)  编辑 收藏 引用 所属分类: 游戏开发

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理