IT袋

当前位置:主页 > 经验教程 > 建站编程 >

多级缓存设计和实战应用

多级缓存设计和实战应用 多层次缓存设计和实际应用(5)

时间:2024-01-27 21:00:21 来源:IT袋 作者:马勇
导读:多级缓存设计和实战应用,方案二、在项目启动完成后,通过访问接口同步 @GetMapping("/loadRedis") public String loadRedis() throws JsonProcessingException { // 初始化缓存 try { // 1.从数据库查询 Li

多级缓存设计和实战应用

多级缓存设计和实战应用

方案二、在项目启动完成后,通过访问接口同步

 @GetMapping("/loadRedis")
    public String loadRedis() throws JsonProcessingException {
        // 初始化缓存
        try {
            // 1.从数据库查询
            List<Item> itemList = itemService.list();
            // 2.放入缓存
            for (Item item : itemList) {
                // item序列化为JSON
                String json = MAPPER.writeValueAsString(item);
                // 存入redis
                redisTemplate.opsForValue().set("item:id:" + item.getId(), json);
            }
        } catch (Exception e) {
            return "loadRedis failed!";
        }
        return "loadRedis sucess!";
    }

缓存数据同步如何做?

数据同步策略

缓存数据同步的常见方式有三种:

设置有效期:给缓存设置有效期,到期后自动删除。再次查询时更新

  • 优势:简单、方便
  • 缺点:时效性差,缓存过期之前可能不一致
  • 场景:更新频率较低,时效性要求低的业务

同步双写:在修改数据库的同时,直接修改缓存

  • 优势:时效性强,缓存与数据库强一致
  • 缺点:有代码侵入,耦合度高;
  • 场景:对一致性、时效性要求较高的缓存数据

异步通知:修改数据库时发送事件通知,相关服务监听到通知后修改缓存数据

  • 优势:低耦合,可以同时通知多个缓存服务
  • 缺点:时效性一般,可能存在中间不一致状态
  • 场景:时效性要求一般,有多个服务需要同步

异步通知方案:

1)基于MQ异步消息

基本流程如下:

多级缓存设计和实战应用

缓存同步流程描述:

  • 业务服务完成对数据的修改后,只需要发送一条消息到MQ中。
  • 缓存服务监听MQ消息,然后完成对缓存的更新

缺点:依然有少量的代码侵入。

2)基于Canal的通知

Canal是阿里巴巴旗下的一款开源项目,基于Java开发。基于数据库增量日志解析,提供增量数据订阅和消费。GitHub的地址:https://github.com/alibaba/canal

Canal是基于mysql的主从同步来实现的,MySQL主从同步的原理如下:

多级缓存设计和实战应用

  • MySQL master 将数据变更写入二进制日志( binary log),其中记录的数据叫做binary log events
  • MySQL slave 将 master 的 binary log events拷贝到它的中继日志(relay log)
  • MySQL slave 重放 relay log 中事件,将数据变更反映它自己的数据

而Canal类似于MySQL的一个slave节点,从而监听master的binary log变化。

再把得到的变化信息通知给Canal对应的客户端,完成对数据库的同步。

相关阅读

  • 编写一个简单的网页结构 网页设计作业html成品

    编写一个简单的网页结构 网页设计作业html成品

    小编为网友们解答编写一个简单的网页结构和网页设计作业html成品方面的介绍,具体详情如下: HTML(HyperText Markup Language)是一种简单、通用的超文本标记语言,Web服务器返回给客户端的最常

  • access数据库的对象是什么 了解access数据库的结构层次

    access数据库的对象是什么 了解access数据库的结构层次

    下面为网友们详细介绍access数据库的对象是什么和了解access数据库的结构层次方面的内容,接下来分享详细内容。 说到数据处理,大家首先想到的是Excel,其实,Office中的数据处理软件除了E

  • web服务器怎么配置 免费个人web服务器推荐

    web服务器怎么配置 免费个人web服务器推荐

    对于许多网友来说web服务器怎么配置和免费个人web服务器推荐方面的内容,具体详情如下: 回想一下一个http请求的过程,你在浏览器输入xxx.com,经过域名解析 发起tcp的3次握手 建立tcp连接后

  • 信息加密、解密与常用算法的基本概念和相关知识

    信息加密、解密与常用算法的基本概念和相关知识

    本文为您带来的是信息加密、解密与常用算法的基本概念和相关知识的话题,请看下面详细的介绍。 一、信息加密概念 信息加密技术是对信息进行伪装,使得信息非法窃取者无法理解信息的真