缓存和数据库会有双写
会有一个时间差不一样
Cahce Aside Pattern
第一种情况:第一次查语句id=1 -› redis(无) -› mysql(有) -耗时600ms
‹---返回-------------------- redis(有) -------------
第一种情况:第n次查语句id=1 -› redis(有) ---耗时2ms
‹---返回--------------------------------
更新 -› 先更新mysql数据库数据 -› 后删除redis缓存数据 ---------------运用了lazy计算思想,就是用才算出来
只可以:先更新mysql数据库数据 -› 后删除redis缓存数据
不可以:先删除redis缓存数据 -› 后更新mysql数据库数据,否则:
更新 -› 先更新mysql数据库数据 -› 后删除redis缓存数据(失败了)
数据会出现不一致
更新 -› 先删除redis缓存数据 -› 后更新mysql数据库数据(失败了)
数据不会出现不一致
更新
-› 1、先删除redis缓存数据
-----------------------› !突然有一个请求过来!(1、查redis查不到)
-----------------------› !突然有一个请求过来!(2、查mysql旧数据)
-----------------------› !突然有一个请求过来!(3、写redis旧)
-› 2、后更新mysql数据库数据
炸了,后面的查都查旧数据