今天遇到mc的一个问题?我在设置某个值?把有效期设成?31天?结果读不出结果,但是明明写是成功的
检查了?代码半天?也以为是?
缓存配置的问题?测试了半个来小时
发现均没有问题
后面?尝试了是不是?key?的长度?
值的问题
终于?测试到了?有效时间?这个
后面?尝试了是不是?key?的长度?
值的问题
终于?测试到了?有效时间?这个
但是?超过?30天?就有问题了
写成功了?那边返回的状态是?写成功
但是?read?不了
亲?是不是?mc?缓存最大的有效期是?30天啊
超过就直接丢弃
?
遇到这个问题,也算是教训了,为什么不认真读读mc源码啊
?
写道
mc set() 的 expire 参数描述:
Expiration time of the item. If it's equal to zero, the item will never > expire. You
can also use Unix timestamp or a number of seconds starting > from current time, but in the latter case the number of seconds may not > exceed 2592000 (30 days).
设置过期时间确实不能超过30天,由于mc的过期机制使用lazy expiration,内部本身是不会监视数据是否过期,当在 get 的是否检查是否过期,所以设置一个不合法的过期时间很能回导致读取时拿不到数据;
怎么破? 目前只能将 expire 设置为0了,但是不能保证真正的永不过期,因为它可能会为了给其他项分配空间而被删除。