前言
Redis非关系型数据库已经是很常见的工具了,项目中用到的也很多,这篇文章系统的分析下使用过程中可能会遇到的问题
一、缓存
缓存是数据交换的缓冲区,是存贮数据的临时地方,一般读写性能较高。
我们项目中引用的Redis目的就是达到降低后端负载,降低响应时间,但是相应的也要考虑数据一致性方面的问题,引入后的项目层次大致为下图,起到了中间缓冲层的作用
二、数据安全问题
从图中一个查看用户填写问卷列表查询的流程,可以看出来加了缓冲之后,缓存的数据是要与数据库的数据保持一致的,这里就会出现数据不一致的情况(比如数据库更新,则缓存亦须更新)
三、解决方案
数据在数据库中发生更新时,主动更新缓存中的数据即可,就是要求调用者在更新数据库的同时更新缓存
在操作数据库和缓存的时候注意以下几点
1.每次更新数据库都要更新缓存吗?
每次更新数据库后都更新缓存的话,无效写操作过多,所以更新数据库的时候选择直接让缓存失效,等到下次查询时再更新缓存
2.怎么保证一致性?
单体项目的话,操作数据库和缓存的逻辑放在一个事务中即可
分布式项目可以利用分布式事务方案
3.更新缓存和数据库的先后顺序如何确定
先操作数据库再删除缓存的安全性更好一点
-------------------------------------------- 一月的第四周 -----------------------------------------------------
周总结:
1.参与项目对接国外用户按照时区的重构方案讨论会
2.初步制定项目重构方案,服务器等必要环境基本搭建完成
3.重构任务的分析,以及开发方式的确定
4.书刊推荐分享会的完成
2024/1/27 阴天 温度较低
1.这么冷的天,再适合睡觉不过了
2.没有太阳,不适合晒鞋,但是非常适合缩在被窝刷剧,《海王2》整体来说还不错吧,虽然剧情略显无聊,但是特效看着还是挺过瘾的
3.睡一觉吧,晚上恰个饭再睡一觉,结束
2024/1/28 晴天 温度适宜
1.醒来第一件事,晒晒我那饱经风霜的莆田,我走到哪儿它就跟到哪儿(废话bushi)
2.下午出去溜达,自助烤肉,真的给我干撑了,后面得吃一星期泡面估计才能缓过来。。。
3.十一点多了,坐在电脑前不自觉的感慨又是一周过去了,我这一生如履薄冰,究竟还能度过多少个周末呢(闻神附体bushi),好了洗洗睡了,下周见