时间Redis中设定Java对象有效期的技巧(redisjava过期)
时间Redis中设定Java对象有效期的技巧
Redis是一款高性能的分布式NoSQL内存键值数据库,在很多项目中都有广泛的应用,尤其是用来作为缓存使用,特别是能处理大批量的键值数据的可用性相当的高,而且能够实现读写分离的功能,是相对著名互联网公司缓存方案实施的首选。在开发过程中我们可能会遇到一些Java对象大小和量都较大,且因为一些业务需要而要求周期性更新的情况,这时我们就需要把这些对象放入Redis中,而且要有一定的有效期,该怎么办呢?下面介绍一种技术做法:
首先可以使用redis的自带的time out功能,这样设置完毕之后,当object被缓存时会主动带上一个有效期,当超过这个时间之后,redis系统会自动删除key。
其次还有另外一种方式是可以让客户端(如java)来实时监控key的有效期,在此之前,我们现将这个object序列化,使用一定格式存储到redis中,比如改造为json或者xml结构,这样就可以使用一个有效期值放在这些数据中,这可以使在客户端可以判断数据是否过期,没有过期则把数据从redis中取出,若过期则重新请求数据:
例如:
String keyStr = “data_user_123456”;
String expStr = “=1517764508”; // 过期时间Unix时间戳,毫秒
jedis.set(keyStr+expStr, “[{user:zhangsan,{age:20,score:100}}];
这样就可以在 Redis 中设定 Java 对象的有效期了,只要客户端逻辑检查时间即可,特别能够处理大量数据的 needs 且要求有效期的场景中是相当有效的,建议大家在缓存方案中多考虑一下使用Redis来处理键值对的有效期问题。