1.介绍
大家还记得,我们在nginx中设置本地的缓存的时候,会给一个过期的时间,比如说10分钟。10分钟以后自动过期,过期了以后,就会重新从redis中去获取数据,这个10分钟到期自动过期的事情,就叫做缓存的失效。
如果缓存失效以后,那么实际上此时,就会存在缓存失效的问题。比如说同一时间来了1000个请求,都将缓存cache在了nginx自己的本地,缓存失效的时间都设置了10分钟。那么是不是可能导致10分钟过后,这些数据,就自动全部在同一时间失效了。
如果同一时间全部失效,会不会导致说同一时间大量的请求过来,在nginx里找不到缓存数据,全部高并发走到redis上去了。
2.解决方案
将nginx本地缓存的有效期尽量设置成随机,避免同一时,缓存全部失效。
math.randomseed(tostring(os.time()):reverse():sub(1, 7))
local expireTime = math.random(600, 1200)