每日一博 - 图解5种Cache策略

2023-12-11 00:29

本文主要是介绍每日一博 - 图解5种Cache策略,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 概述
  • 读策略
    • Cache Aside
    • Read Through
  • 写策略
    • Write Through
    • Write Around
    • Write Back
  • 使用场景举例

在这里插入图片描述


概述

缓存是在系统中存储数据的临时存储器,用于提高访问速度。缓存策略定义了如何在缓存和主存之间管理数据


读策略

Read data from the system:
🔹 Cache aside
🔹 Read through
在这里插入图片描述


Cache Aside

概念: 应用程序负责将数据写入和从缓存读取,缓存不主动参与。
作用: 简化实现,但可能导致缓存脏数据。

应用程序自己管理缓存。当需要数据时,应用程序会先在缓存中查找,如果不存在,才到数据库中加载。加载到数据库后,同时保存到缓存中。这种策略简单直接,应用程序有完全控制权。但问题是代码复杂,需要自己处理缓存失效、预热、异步加载等问题。

在这里插入图片描述


Read Through

概念: 数据访问时,缓存负责检查是否有所需数据。如果不存在,缓存负责从主存中获取。
作用: 自动化数据加载,减少了应用程序的负担,但可能导致读取性能损失。

应用程序只查询缓存,不直接访问数据库。如果缓存不存在,则自动从数据库加载,然后返回给应用程序,同时更新缓存。这简化了应用程序代码,但也限制了应用程序直接访问数据库

在这里插入图片描述


写策略

Write data to the system:
🔹 Write around
🔹 Write back
🔹 Write through

在这里插入图片描述

Write Through

概念: 写入时同时到缓存和主存,确保主存和缓存中的数据一致。
作用: 数据一致性,但可能导致写入性能较低。

数据修改请求直接写入数据库,同时也保存到缓存中(不是所有实现都这么做)。所以,缓存能保证和数据库一致性。但每次写操作都会比较慢

在这里插入图片描述


Write Around

概念: 写入时直接到主存,而不是到缓存。缓存只在读取时更新。
作用: 避免缓存污染,适用于大量写入但很少读取的情况。

直接写入数据库,但不写入缓存。这可以减轻缓存的压力,但是读取数据时缓存在没有命中,需要从数据库中加载数据然后放入缓存,性能比较差。

在这里插入图片描述


Write Back

概念: 写入时只到缓存,延迟写回主存。缓存跟踪哪些数据被修改。
作用: 提高写入性能,但可能导致数据不一致。

在这里插入图片描述


使用场景举例

  1. Cache Aside:

    • 案例: 在一个电子商务网站中,商品信息被频繁读取,但更新并不频繁。采用 Cache Aside 策略,应用程序在需要时直接从数据库读取商品信息,然后将其缓存在内存中。如果有更新,应用程序负责同时更新数据库和缓存。
  2. Read Through:

    • 案例: 在一个社交媒体应用中,用户的个人资料信息经常被访问。使用 Read Through 策略,当用户请求个人资料时,缓存会检查是否存在,如果不存在,它将从数据库中读取用户的个人资料并将其存储在缓存中,以便下一次访问。
  3. Write Around:

    • 案例: 在一个日志记录系统中,日志条目的写入频率很高,但很少读取。采用 Write Around 策略,应用程序直接将日志写入主存储,而不将其写入缓存。缓存仅用于读取请求,以避免缓存污染。
  4. Write Back:

    • 案例: 在一个文件系统中,用户频繁编辑文档。使用 Write Back 策略,文件系统将用户编辑的文档暂时保存在缓存中,而不是立即写回主存储。只有当缓存满或文档不再被频繁访问时,才将更改写回主存储。
  5. Write Through:

    • 案例: 在一个金融交易系统中,每笔交易都需要确保立即写入主存储并更新缓存。采用 Write Through 策略,系统在执行每笔交易时同时将数据写入缓存和主存储,以确保数据的一致性。

在这里插入图片描述

这篇关于每日一博 - 图解5种Cache策略的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/478825

相关文章

SpringBoot如何通过Map实现策略模式

《SpringBoot如何通过Map实现策略模式》策略模式是一种行为设计模式,它允许在运行时选择算法的行为,在Spring框架中,我们可以利用@Resource注解和Map集合来优雅地实现策略模式,这... 目录前言底层机制解析Spring的集合类型自动装配@Resource注解的行为实现原理使用直接使用M

Redis 内存淘汰策略深度解析(最新推荐)

《Redis内存淘汰策略深度解析(最新推荐)》本文详细探讨了Redis的内存淘汰策略、实现原理、适用场景及最佳实践,介绍了八种内存淘汰策略,包括noeviction、LRU、LFU、TTL、Rand... 目录一、 内存淘汰策略概述二、内存淘汰策略详解2.1 ​noeviction(不淘汰)​2.2 ​LR

Golang基于内存的键值存储缓存库go-cache

《Golang基于内存的键值存储缓存库go-cache》go-cache是一个内存中的key:valuestore/cache库,适用于单机应用程序,本文主要介绍了Golang基于内存的键值存储缓存库... 目录文档安装方法示例1示例2使用注意点优点缺点go-cache 和 Redis 缓存对比1)功能特性

Deepseek使用指南与提问优化策略方式

《Deepseek使用指南与提问优化策略方式》本文介绍了DeepSeek语义搜索引擎的核心功能、集成方法及优化提问策略,通过自然语言处理和机器学习提供精准搜索结果,适用于智能客服、知识库检索等领域... 目录序言1. DeepSeek 概述2. DeepSeek 的集成与使用2.1 DeepSeek API

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

SpringBoot中的404错误:原因、影响及解决策略

《SpringBoot中的404错误:原因、影响及解决策略》本文详细介绍了SpringBoot中404错误的出现原因、影响以及处理策略,404错误常见于URL路径错误、控制器配置问题、静态资源配置错误... 目录Spring Boot中的404错误:原因、影响及处理策略404错误的出现原因1. URL路径错

Redis多种内存淘汰策略及配置技巧分享

《Redis多种内存淘汰策略及配置技巧分享》本文介绍了Redis内存满时的淘汰机制,包括内存淘汰机制的概念,Redis提供的8种淘汰策略(如noeviction、volatile-lru等)及其适用场... 目录前言一、什么是 Redis 的内存淘汰机制?二、Redis 内存淘汰策略1. pythonnoe

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

Redis过期键删除策略解读

《Redis过期键删除策略解读》Redis通过惰性删除策略和定期删除策略来管理过期键,惰性删除策略在键被访问时检查是否过期并删除,节省CPU开销但可能导致过期键滞留,定期删除策略定期扫描并删除过期键,... 目录1.Redis使用两种不同的策略来删除过期键,分别是惰性删除策略和定期删除策略1.1惰性删除策略