Welcome 微信登录

首页 / 软件开发 / JAVA / java中memcache有效期问题

java中memcache有效期问题2015-02-09最近在项目中使用memcache,用的客户端是memcached for java,参考客户端api得出java客户端有效期的设置方法如下:

addublic boolean add(java.lang.String key,java.lang.Object value,java.util.Date expiry) Adds data to the server; the key, value, and an expiration time are specified. Parameters: key - key to store data under value - value to store expiry - when to expire the recordReturns: true, if the data was successfully stored

api中没有详细介绍有效期参数,翻译可得expiry - 记录什么时候到期,故在项目中就直接传了一个当前时间+1小时的一个date类型,结果呢?

结果就是导致取不到值,google一把,说是默认有效期为30天,超过后就不往memcache中放了,由此猜想可能是这个date参数不是这么用的,翻看了下客户端源码:

expiry.getTime() / 1000L
String cmd = (new StringBuilder()).append(cmdname).append(" ").append(key).append(" ").append(flags).append(" ").append(expiry.getTime() / 1000L).append(" ").append(val.length).append("
").toString();
根据memcache api  有效期有一个数值型时间长度值,意思就是多少毫秒后过期。

明白了吧,java中应该用new Date(3600000L);来标识一个小时后过期。