缓存模式有哪些具体应用概要?

2026-05-05 20:572阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计662个文字,预计阅读时间需要3分钟。

缓存模式有哪些具体应用概要?

背景:在大部分C端项目中,若想提升系统并发能力,通常需要上缓存。

缓存模式有哪些具体应用概要?

内容:但是缓存的实现方式多种多样,本文主要探讨穿透实现,并直接阐述设计模式上的概念,方便各种实现方式对号入座。

概念:So

背景

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

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

  • 读取伪代码

    点击查看代码

    v = cache.get(k) if (v == null) { v = sor.get(k) cache.put(k, v) }

  • 写入伪代码

    点击查看代码

    v = newV sor.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
    在更新数据的时候,只更新缓存,不更新数据库,从而提高数据更新的响应速度。缓存会异步地批量更新数据库,代价就是数据不是强一致的。
参考
  • www.ehcache.org/documentation/3.10/caching-patterns.html

本文共计662个文字,预计阅读时间需要3分钟。

缓存模式有哪些具体应用概要?

背景:在大部分C端项目中,若想提升系统并发能力,通常需要上缓存。

缓存模式有哪些具体应用概要?

内容:但是缓存的实现方式多种多样,本文主要探讨穿透实现,并直接阐述设计模式上的概念,方便各种实现方式对号入座。

概念:So

背景

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

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

  • 读取伪代码

    点击查看代码

    v = cache.get(k) if (v == null) { v = sor.get(k) cache.put(k, v) }

  • 写入伪代码

    点击查看代码

    v = newV sor.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
    在更新数据的时候,只更新缓存,不更新数据库,从而提高数据更新的响应速度。缓存会异步地批量更新数据库,代价就是数据不是强一致的。
参考
  • www.ehcache.org/documentation/3.10/caching-patterns.html