数据库前端缓存

一、数据库缓存失效问题
有两个选择:
1、既修改数据库又修改缓存
2、只修改数据库让缓存失效
选2,因为直接修改缓存里的值操作麻烦。只修改数据库的值,通过指令让缓存失效,程序会自动从数据库中查询出记录,更新到缓存中

接下来又有两个选择:
1、先修改数据库再让缓存失效
2、先让缓存失效再修改数据库
选2,因为考虑到操作分为两步,如果第一步成功,第二步失败了?
先修改数据库再让缓存失效,会导致请求还是读取缓存中的旧值,而先让缓存失效再修改数据库,如果第二步失败了,不影响使用

考虑多线程的情况:
1、第一个线程线程进来动作是让缓存失效了
2、这时候第二个请求线程进来,发现缓存失效了,就从数据库中读取值,更新了缓存,这样缓存中还是旧的值
3、因为多线程执行顺序不确定,看CPU时间片分配
所以访问同一个数据库需要同一个连接对象,保证数据库层面一定是串行
 

猜你喜欢

转载自blog.csdn.net/csj50/article/details/82056659