redis使用问题——数据一致性

缓存热数据,过程可能如下:

Select 数据库前查询redis,有的话使用redis数据,放弃select 数据库,没有的话,select 数据库,然后将数据插入redis

update或者delete数据库前,查询redis是否存在该数据,存在的话先删除redis中数据,然后再update或者delete数据库中的数据

上面这种操作,如果并发量很小的情况下基本没问题,但是高并发的情况请注意下面场景:为了update先删掉了redis中的该数据,这时候另一个线程执行查询,发现redis中没有,瞬间执行了查询SQL,并且插入到redis中一条数据,回到刚才那个update语句,这个悲催的线程压根不知道刚才那个该死的select线程犯了一个弥天大错!于是这个redis中的错误数据就永远的存在了下去,直到下一个update或者delete

redis数据一致性没有太好的办法来解决,以下是大致的注意点:

1、当更新数据时,先更新数据库,再更新或删除缓存

2、缓存只做失效,不做更新

3、高一致性的情况,不用缓存

猜你喜欢

转载自blog.csdn.net/weixin_38230961/article/details/82683422