缓存模式概要

博客 分享
0 231
优雅殿下
优雅殿下 2022-05-31 20:59:56
悬赏:0 积分 收藏

缓存模式概要

背景

在大部分C端项目中,如果想提升系统并发能力,需要上缓存。但是缓存的实现方式多种多样,本文主要穿透实现,直接阐述设计模式上的概念,方便各种实现对号入座。

概念

  • SoR(System-of-Record )
    记录系统,这里指的就是实际数据存放的系统,一般指业务对应的数据库

分类

1. Cache-aside

  • 读取伪代码

    点击查看代码
    v = cache.get(k)if (v == null) {  v = sor.get(k)  cache.put(k, v)}
  • 写入伪代码

    点击查看代码
    v = newVsor.put(k, v)cache.put(k, v)

这种模式下,需要应用程序嵌入缓存处理的逻辑:
- 在查询时,判断缓存是否存在记录,有直接返回;没有则从SoR中获取,再更新缓存。
- 在写入时,缓存必须和记录系统一起更新

2. Cache-as-SoR

缓存即 SoR 模式: 使用缓存和使用记录系统无差别(无感知)。这种模式下对读写场景需要做具体实现:

2.1 读场景

  • Read-through
    读场景下,一般采用Read-through模式,缓存中间件提供一个loader组件,对应用程序来说只与loader交互,实际底层并不关心实现。

2.2 写场景

写场景下,主要描述如何更新缓存,有以下两种选择

  • Write-through
    更新数据时,缓存中间件提供一个write组件,对应用程序来说只需要知道更新了数据。具体逻辑由组件实现,去更新记录系统,并更新缓存
  • Write-behind
    在更新数据的时候,只更新缓存,不更新数据库,从而提高数据更新的响应速度。缓存会异步地批量更新数据库,代价就是数据不是强一致的。

参考

  • https://www.ehcache.org/documentation/3.10/caching-patterns.html
posted @ 2022-05-31 20:46 指尖挥舞 阅读(0) 评论(0) 编辑 收藏 举报
回帖
    优雅殿下

    优雅殿下 (王者 段位)

    2018 积分 (2)粉丝 (47)源码

    小小码农,大大世界

     

    温馨提示

    亦奇源码

    最新会员