使用缓存之前,需要和产品确认能否容忍一定时间的数据不一致性,能容忍的话就用缓存,不能容忍,可以考虑写定时任务。
一般会对缓存设置失效时间,一旦超过失效时间,就要从数据库重新加载,因此应用要容忍一定时间的数据不一致。
还有一种是在数据更新时立即更新缓存,不过这也会更多系统开销和事务一致性问题。
使用缓存过程中,我们经常会遇到缓存数据的不一致性和与脏读现象,
我们有什么解决策略呢? 一般情况下,我们采取缓存双淘汰机制,在更新数据库的时候淘汰缓存。
此外,设定超时时间,例如30分钟。 极限场景下,即使有脏数据入cache,这个脏数据也最多存在三十分钟。
缓存是提高数据读取性能的,缓存数据丢失和缓存不可用不会影响应用程序的处理。
因此,一般的操作手段是,如果Redis出现异常,我们手动捕获这个异常,记录日志,并且去数据库查询数据返回给用户。