背景
日前面试的时候被问到我们项目里面使用Redis的时候是如何更新缓存的,我的回答是写操作的时候的时候把缓存删了,然后读操作的时候就会读取出来最新的值。面试管继续问:Redis的写时更新和读时更新有什么区别没有?我的回答只是说写的时候直接删缓存的话这种方式会好实现一点,并没有答上来其他的一些区别。回来后好好的补了一番这方面的知识,特此做一个记录,以免下次再掉坑里。
什么是写时更新和读时更新
写时更新:当我们往数据库写数据的时候我们去更新缓存,包括先更新缓存再更新数据库和先更新数据库再更新缓存。
写时删除,读时更新:当我们往数据库写数据的时候我们直接删除缓存,然后其他请求读数据的时候更新缓存。包括先删除缓存再更新数据和先更新数据库再删除缓存。
缓存更新到底是读更新好还是写更新好?
读更新好,为什么?
- 如果你是一个写数据库场景比较多,而读数据场景比较少的业务需求,采用这种方案就会导致,数据压根还没读到,缓存就被频繁的更新,浪费性能。
- 同时有请求A和请求B进行更新操作,那么会出现 (1&#