AutoLoadCache 5.2 发布

2017年04月13日

5.2 版本只是优化一些小细节上的东西:

  1. 更新fastjson,因为 fastjson 1.2.28之前的版本有安全漏洞,所以需要及时更新;

  2. 增加一些debug信息;

  3. 当缓存时行设置为小于0的值时,不进行缓存。

最后附上和网友沟通中遇到的“空”处理问题:

非常多人都有这样的误区,认为数据层返回数据如果是“空”时(这里的空指的是:null或集合里为空)就不进行缓存了,这样才能实现数据的及时更新。对于这个情况,还是要分情况处理的。

  1. 数据为“空”是人为造成的,不是真的没有数据. 非常典型的例子就是,异常处理不当造成的:直接使用try,catch,然后直接就返回null,或者一个空的集合。这样的做法非常不合理,使用者根本无法知道,是真的没有数据,还是因为有异常造成的,我们更无法确定要不要缓存这类数据了。所以我们在实现数据层接口时,一定要合理使用异常处理。

  2. 数据“真的”为“空”时,建议缓存起来. 我们使用缓存的目的之一,就是防止缓存失效后直接穿透到数据层,造成系统负载过高。所以如果获取这个数据并发突然上来了,很容易造成系统瘫痪。如果只是尽快更新缓存中的数据,达到更好的“实时”性,可以减小缓存时间来实现。在AutoLoadCache 已经支持这种处理机制,只要在@Cache中,使用expireExpression,可以动态设置缓存时长,如:

@Cache(key = "...", expireExpression = "#empty(#retVal) ? 60: 120")

          而且数据为“空”,它是有它实际意义的,就是告诉我们现在没有数据, 不要忽略这点。

附:最佳实战

展开阅读全文
15 收藏
分享
加载中
更多评论
0 评论
15 收藏
分享
返回顶部
顶部