首页
数据库

分类

当前位置: 云海天教程网 > 技术新闻 > 数据库 >正文

Redis项目总结-

更新时间:2022-12-09  作者:佚名   来源: 网络转载

Redis项目总结-

Redis项目总结--缓存更新策略

1.更新策略

内存淘汰 超时剔除 主动更新
说明 不用自己维护,利用Redis内存淘汰机制,内存不足时自动淘汰部分数据,下次查询时更新缓存 给缓存数据添加过期时间,到期删除,下次查询时更新缓存 编写业务逻辑,在修改数据库的同时更新缓存
一致性 一般(取决于过期时间的长短)
维护成本

低一致性场景选内存淘汰,高一致性场景选主动更新,也可以和超时剔除结合使用

2.主动更新的三种方案(一般用方案一)

方案一:在更新数据库 的同时更新缓存。

方案二:缓存与数据库整合为一个服务,由服务来维护一致性,调用者调用该服务,无需关心缓存一致性问题。

  • 优点:保证了数据的一致性
  • 缺点:开发成本高

方案三:调用者只操作缓存,由其他线程异步将缓存数据持久化到数据库。

  • 优点:异步更新缓存数据,效率高。两次异步更新之间,对一个数据进行了多次修改,最终只有最后一次的更新有效,相当于将多次更新合并为一次。
  • 缺点:维护成本高,一致性和可靠性存在问题。数据变动后到下一次异步更新前数据不一致。若出现宕机则数据丢失。

3.主动更新方案一操作缓存和数据库的三个问题

(1)删缓存还是更新缓存(一般选删除缓存)

  • 更新缓存:每次更新数据库都更新缓存,无效写操作多
  • 删除缓存:更新数据库时让缓存失效,查询时再更新缓存

(2)如何保证缓存和数据库操作同时成功或失败

  • 单体系统:将缓存与数据库操作放到同一个事务
  • 分布式系统:利用TCC等分布式事务事务方案

(3)先操作缓存还是先操作数据库(会引发两种不同的线程安全问题)

  • 先删缓存再操作数据库
  • 先操作数据库再删缓存

4.缓存和数据库操作顺序引发的线程安全问题

一般更新的操作比查询和写入缓慢,第二种操作发生异常的概率比第一种操作低,所以一般使用先操作数据库再删缓存

(1)先删缓存再操作数据库

正常情况:

Redis项目总结-

异常情况:

Redis项目总结-

(2)先操作数据库再删缓存

正常情况:

Redis项目总结-

异常情况:

Redis项目总结-

上一篇:1.5.5 HDFS读写解析-hadoop 下一篇:全网最全的linux上docker安装oracle的详细文档,遇到了n个问题,查了几十篇文章,最终汇总版,再有解决不了的,私聊我,我帮你解决
小编推荐
快速导航更多>>
JavaScript 教程 HTML5 教程 CSS3 教程 jQuery 教程 Vue.js 教程 Node.js 教程 SQL 教程 C 教程 PHP 教程 Linux 教程 Docker 教程 Nginx 教程 Python 教程 Java 教程

云海天教程网 版权所有

 陕公网安备 61050202000585号

陕ICP备14013131号-3