黑马点评技术汇总(五)缓存更新策略
一、最佳方案1.查询数据先查询缓存如果缓存命中直接返回如果缓存未命中则查询数据库将数据库数据写入缓存返回结果2.修改数据库时先修改数据库然后删除缓存确保两者的原子性。// 因为下面是选择原因二、总方案内存淘汰redis自动进行当redis内存达到咱们设定的max-memery的时候会自动触发淘汰机制淘汰掉一些不重要的数据(可以自己设置策略方式)超时剔除当我们给redis设置了过期时间ttl之后redis会将超时的数据进行删除方便咱们继续使用缓存主动更新我们可以手动调用方法把缓存删掉通常用于解决缓存和数据库不一致问题1.数据库缓存不一致解决方案1Cache Aside Pattern 人工编码方式缓存调用者在更新完数据库后再去更新缓存也称之为双写方案2Read/Write Through Pattern :由系统本身完成数据库与缓存的问题交由系统本身去处理3Write Behind Caching Pattern 调用者只操作缓存其他线程去异步处理数据库实现最终一致我们通常采用第一种方案假设我们每次操作数据库后都操作缓存但是中间如果没有人查询那么这个更新动作实际上只有最后一次生效中间的更新动作意义并不大我们可以把缓存删除等待再次查询时将缓存中的数据加载出来* 删除缓存还是更新缓存* 更新缓存每次更新数据库都更新缓存无效写操作较多*删除缓存更新数据库时让缓存失效查询时再更新缓存我们采用删除缓存解决