前言

        Redis非关系型数据库已经是很常见的工具了,项目中用到的也很多,这篇文章系统的分析下使用过程中可能会遇到的问题

一、缓存

        缓存是数据交换的缓冲区,是存贮数据的临时地方,一般读写性能较高。

        我们项目中引用的Redis目的就是达到降低后端负载,降低响应时间,但是相应的也要考虑数据一致性方面的问题,引入后的项目层次大致为下图,起到了中间缓冲层的作用

redis缓存能存放多少数据 redis缓存支持数据量多大_数据

二、数据安全问题

        从图中一个查看用户填写问卷列表查询的流程,可以看出来加了缓冲之后,缓存的数据是要与数据库的数据保持一致的,这里就会出现数据不一致的情况(比如数据库更新,则缓存亦须更新)

redis缓存能存放多少数据 redis缓存支持数据量多大_redis缓存能存放多少数据_02

三、解决方案

        数据在数据库中发生更新时,主动更新缓存中的数据即可,就是要求调用者在更新数据库的同时更新缓存

        在操作数据库和缓存的时候注意以下几点

1.每次更新数据库都要更新缓存吗?

        每次更新数据库后都更新缓存的话,无效写操作过多,所以更新数据库的时候选择直接让缓存失效,等到下次查询时再更新缓存

2.怎么保证一致性?

        单体项目的话,操作数据库和缓存的逻辑放在一个事务中即可

        分布式项目可以利用分布式事务方案

3.更新缓存和数据库的先后顺序如何确定

        先操作数据库再删除缓存的安全性更好一点

redis缓存能存放多少数据 redis缓存支持数据量多大_缓存_03

--------------------------------------------   一月的第四周   -----------------------------------------------------