码迷,mamicode.com
首页 > 编程语言 > 详细

spring redis cache使用思考

时间:2015-06-17 21:47:34      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

  项目中使用spring redis cache做为cache客户端。

  spring redis cache中RedisCache是整个spring cache的领域模型,对应一个cache块的操作类。

 RedisCache中定义了put,get,clean,evict操作。

 其中clean方法用于清除当前cache块中所有的元素,这里会加锁,而锁的实现是往redis服务器上存放一个key为:cache块名称加上~lock的元素。最后清除锁则是在clean方法执行完成后在finally中清除。

 put与get方法运行时会查看是否存在lock锁,存在则会sleep 300毫秒。这个过程会一直继续,直到redis服务器上不存在锁时才会进行相应的get与put操作。

 这里存在一个问题,如果clean方法运行时间很长,这时当前运行clean操作的机子挂了,就导致lock元素一直存在于redis服务器上。

 之后就算这个机子重新启动后,也无法正常使用cache。原因是:get与put方法在运行时,锁lock始终存在于redis服务器上。


 项目运行中,遇到了这种情况。


总结:

  在开发过程中,如果使用到开源框架中的某个方法,一定要深入了解其实现方式,运用场景。最坏的情况是什么。

spring redis cache使用思考

标签:

原文地址:http://blog.csdn.net/zhaozhenzuo/article/details/46535573

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!