先存入redis再写入mysql_Redis系列:并发环境下,先操作数据库还是先操作Redis缓存?...

前言

在分布式系统中,缓存和数据库同时存在时,如果有写操作的时候,先操作数据库还是先操作缓存呢?先思考一下,可能会存在哪些问题,再往下看。下面我分几种方案阐述。

缓存维护方案一

假设有一写(线程A)一读(线程B)操作,先操作缓存,在操作数据库。,如下流程图所示:

先存入redis再写入mysql_Redis系列:并发环境下,先操作数据库还是先操作Redis缓存?..._第1张图片

1)线程A发起一个写操作,第一步del cache

2)线程A第二步写入新数据到DB

3)线程B发起一个读操作,cache miss,

4)线程B从DB获取最新数据

5)请求B同时set cache

这样看,没啥问题。我们再看第二个流程图,如下:

先存入redis再写入mysql_Redis系列:并发环境下,先操作数据库还是先操作Redis缓存?..._第2张图片

1)线程A发起一个写操作,第一步del cache

2)此时线程B发起一个读操作,cache miss

3)线程B继续读DB,读出来一个老数据

4)然后老数据入cache

5)线程A写入了最新的数据

OK,酱紫,就有问题了

你可能感兴趣的:(先存入redis再写入mysql_Redis系列:并发环境下,先操作数据库还是先操作Redis缓存?...)