最赞回答 / 春天的雪
我的理解是,缓存在redis上的seckill对象是旧的。因为其他人的秒杀行为会把数据库中的number减少,而redis上缓存的number没有改变。超时就是,一定时间后,redis上这个seckill被销毁,再次查询时就会从数据库直接拿,并且把这个拿到的最新seckill存入redis。
2018-07-28
最赞回答 / 精慕门6287748
在执行return语句之前会执行finally语句,这个是正常的。参考https://www.cnblogs.com/jzsz/p/7860502.html
2018-07-28
最赞回答 / study_workSpace
使用互斥锁(mutex key) ;简单点讲就是类似“锁”的机制,在缓存更新或者过期的情况下,先获取锁,在进行更新或者从数据库中获取数据后,再释放锁,需要一定的时间等待,就可以从缓存中继续获取数据String get(String key){
String value = redis.get(key); if(value == null){ if(redis.setnx(key_Mutex),"1"){
redis.expire(key_mutex,3*...
2018-07-05