缓存
文章平均质量分 59
seolinAziz
这个作者很懒,什么都没留下…
展开
-
Redis缓存穿透案例
表关系描述类似于好友之间的关联关系,有表N,M以及N与M的关联关系表,N表与M表假设均有100W的数据,M与N两者关系是一个稀疏矩阵(只有少部分之间有关系,大约10%)。业务场景通过表N中的一条记录,来查询关联的M有哪些人,并且这是一个高频次操作。存在的问题mysql单库承受如此多的查询请求,容易拖垮整个库。解决方案以下解决方案的目的是为了过滤掉空查询。Redis设置空值方案描述在查询到N与M关联关系表中的空值时,就往Redis存储一个空值,设置一个的过期时间(固定时间+随机时间),大约原创 2021-03-11 09:39:44 · 1020 阅读 · 0 评论 -
缓存与数据库双写不一致
在大并发下,多线程操作数据库与缓存会存在两者数据不一致的问题。首先重要的是先更新数据库,在失效缓存。读写并发不一致情况线程1先更新数据库,将字段t改为6,然后将缓存失效,线程结束。线程2过来读数据库,读取到了t为6的信息,在准备插入缓存之前发生了线程调度,线程3过来更新数据库,并且将缓存失效后线程3结束,然后线程2继续插入数据,此时缓存中的数据是6,而数据库的数据是7,出现了不一致的情况。时序图如下图所示:![image.png](https://img-blog.csdnimg.cn/img_co原创 2021-03-10 14:26:31 · 988 阅读 · 0 评论