广告
返回顶部
首页 > 资讯 > 数据库 >redis更新缓存有几种模式
  • 780
分享到

redis更新缓存有几种模式

2024-04-02 19:04:59 780人浏览 薄情痞子
摘要

Redis更新缓存有几种模式?针对这个问题,今天小编总结了这篇文章,希望能帮助更多想解决这个问题的朋友找到更加简单易行的办法。redis更新缓存的Design Pattern有四种:Cache aside,

Redis更新缓存有几种模式?针对这个问题,今天小编总结了这篇文章,希望能帮助更多想解决这个问题的朋友找到更加简单易行的办法。

redis更新缓存的Design Pattern有四种:Cache aside, Read through, Write through, Write behind caching。

Cache Aside Pattern

这是最常用最常用的pattern了。其具体逻辑如下:

失效:应用程序先从cache取数据,没有得到,则从数据库中取数据,成功后,放到缓存中。

命中:应用程序从cache中取数据,取到后返回。

更新:先把数据存到数据库中,成功后,再让缓存失效。

注意,我们的更新是先更新数据库,成功后,让缓存失效。那么,这种方式是否可以没有文章前面提到过的那个问题呢?我们可以脑补一下。

一个是查询操作,一个是更新操作的并发,首先,没有了删除cache数据的操作了,而是先更新了数据库中的数据,此时,缓存依然有效,所以,并发的查询操作拿的是没有更新的数据。

但是,更新操作马上让缓存的失效了,后续的查询操作再把数据从数据库中拉出来。而不会像文章开头的那个逻辑产生的问题,后续的查询操作一直都在取老的数据。

redis更新缓存有几种模式

Read Through

Read Through 套路就是在查询操作中更新缓存,也就是说,当缓存失效的时候(过期或LRU换出),Cache Aside是由调用方负责把数据加载入缓存,而Read Through则用缓存服务自己来加载,从而对应用方是透明的。

Write Through

Write Through 套路和Read Through相仿,不过是在更新数据时发生。当有数据更新的时候,如果没有命中缓存,直接更新数据库,然后返回。如果命中了缓存,则更新缓存,然后再由Cache自己更新数据库(这是一个同步操作)

下图自来Wikipedia的Cache词条。其中的Memory你可以理解为就是我们例子里的数据库。

redis更新缓存有几种模式

Write Behind Caching Pattern

Write Behind 又叫 Write Back。一些了解linux操作系统内核的同学对write back应该非常熟悉,这不就是Linux文件系统的Page Cache的算法吗?是的,你看基础这玩意全都是相通的。所以,基础很重要,我已经不是一次说过基础很重要这事了。

Write Back套路,一句说就是,在更新数据的时候,只更新缓存,不更新数据库,而我们的缓存会异步地批量更新数据库。

这个设计的好处就是让数据的I/O操作飞快无比(因为直接操作内存嘛 ),因为异步,write backg还可以合并对同一个数据的多次操作,所以性能的提高是相当可观的。

但是,其带来的问题是,数据不是强一致性的,而且可能会丢失(我们知道Unix/Linux非正常关机会导致数据丢失,就是因为这个事)。

在软件设计上,我们基本上不可能做出一个没有缺陷的设计,就像算法设计中的时间换空间,空间换时间一个道理,有时候,强一致性和高性能,高可用和高性性是有冲突的。软件设计从来都是取舍Trade-Off。

另外,Write Back实现逻辑比较复杂,因为他需要track有哪数据是被更新了的,需要刷到持久层上。操作系统的write back会在仅当这个cache需要失效的时候,才会被真正持久起来,比如,内存不够了,或是进程退出了等情况,这又叫lazy write。

在wikipedia上有一张write back的流程图,基本逻辑如下:

redis更新缓存有几种模式

关于redis更新缓存的模式就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: redis更新缓存有几种模式

本文链接: https://www.lsjlt.com/news/38309.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • redis更新缓存有几种模式
    redis更新缓存有几种模式?针对这个问题,今天小编总结了这篇文章,希望能帮助更多想解决这个问题的朋友找到更加简单易行的办法。redis更新缓存的Design Pattern有四种:Cache aside,...
    99+
    2022-10-18
  • redis有几种存储方式
    Redis其实就是一个用C语言写的一个程序,这个程序用来存储 key-value数据,数据先放在内存,然后写入磁盘指定位置。下面我们梳理一下Redis存储两种方式: RDB和AOF    ...
    99+
    2022-10-18
  • Redis的4种缓存模式分享
    目录概述缓存策略的选择Cache AsideRead ThroughWrite ThroughWrite-Behind小结概述 在系统架构中,缓存可谓提供系统性能的最简单方法之一,稍微有点开发经验的同学必然会与缓存打过交...
    99+
    2022-07-04
    Redis缓存模式 缓存模式
  • redis缓存的更新方法有哪些
    Redis缓存的更新方法有以下几种:1. 更新缓存数据:直接更新缓存中的数据,可以使用`SET`命令或者其他适合的命令来更新缓存中的...
    99+
    2023-08-23
    redis
  • 如何使用Redis实现分布式缓存更新
    如何使用Redis实现分布式缓存更新在分布式系统中,缓存起到了重要的作用,可以大大提升系统的性能和可扩展性。而Redis作为一种高性能的内存数据库,常用于分布式缓存的实现。本文将为您介绍如何使用Redis实现分布式缓存的更新,并给出具体的代...
    99+
    2023-11-07
    分布式 redis 缓存更新
  • 如何使用Redis和Lua开发分布式缓存更新功能
    如何使用Redis和Lua开发分布式缓存更新功能在分布式系统中,缓存的更新是一项非常重要的任务。而Redis作为一种高性能的键值存储系统,与其强大的支持分布式缓存的能力,结合Lua脚本的灵活性,可以有效地实现分布式缓存的更新功能。为了演示如...
    99+
    2023-10-22
    redis lua 分布式缓存更新
  • 如何利用Redis和VB.NET开发分布式缓存更新功能
    如何利用Redis和VB.NET开发分布式缓存更新功能随着互联网的不断发展,应用程序的用户数量也在不断增加。在高并发的场景下,为了提高应用程序的性能和扩展性,我们通常会使用缓存来减轻数据库的负载。Redis是一种高性能的内存数据存储和缓存数...
    99+
    2023-10-22
    redis VBNET 分布式缓存更新
  • Go 语言缓存实现有多种方式,你知道哪种更适合 LeetCode 接口吗?
    随着互联网技术的不断发展,缓存技术被越来越广泛地应用于各种应用场景中。在面试中,LeetCode 是一个非常受欢迎的编程题库,它的题目涉及到大量的数据结构和算法,同时也有不少需要用到缓存的题目。在这种情况下,我们需要了解 Go 语言中实现...
    99+
    2023-11-03
    缓存 接口 leetcode
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作