1.给数据加过期时间。(假如说今天的数据明天就需要更新,就把那些明天需要更新的数据加上过期时间)
2.在我们的实际开发当中往往采用如下方式实现实现Mysql和Redis数据同步:当我们在MySQL数据库中进行增删改的时候,我们在增删改的service层将缓存中的数据清除,这个时候用户在此请求的时候我们缓存中没有数据了,直接去数据库中查询,查询回来之后将缓存中的数据放缓存当中,这个时候缓存中的数据就是最新的数据。
问题来了增删改的时候,是先更新数据库呢还是先删除缓存呢?
我个人认为是
1.给方法上加上事物防止断电。断电了在启动项目的时候清空redis。
2.redis不支持事务,不会回滚。(要是删除缓存失败的情况)需要在catch里面写redis的清空操作。(保证一致性)
3.(高并发的情况下)加上了事物,有原子性,一致性,隔离性,持久性。不会出现脏读数据的情况,不会出现一个事物更新,一个事物查询,更新的事物还没有运行完成就被另一个读取的情况。
REPEATABLE_READ可重复读取级别保证同一事务中先后执行的多次查询将返回同一结果,不受其他事务影响。以操作同一行数据为前提,读事务禁止其他写事务,但允许其他读事务,未提交的写事务禁止其他读事务和写事务。此隔离级别可以防止更新丢失、脏读、不可重复读,但不能防止幻读。
加上上面图片中的隔离性。就会一个事物更新完成提交之后,另一个事务才会读取。
上面的操作全是个人观点,如有不对的地方,欢迎小伙伴们留言