首页 > 数据库 >[Redis]双写一致性

[Redis]双写一致性

时间:2024-07-18 18:52:52浏览次数:13  
标签:缓存 数据库 Redis 更新 缓存数据 抽象 一致性 数据 双写

经典缓存模式

旁路缓存

读数据

首先读缓存,

  • 如果缓存中有这个数据,直接返回
  • 如果缓存中没有这个数据,去读数据库,
    • 如果数据库中有这个数据,先把这个数据更新到缓存,再返回数据
    • 如果数据库也没有这个数据,返回无数据

写数据

先更新数据库,再删除缓存

读写穿透缓存

这个模式在用户和缓存之间多了一个抽象缓存层,

读操作

  • 用户请求抽象缓存层读取数据
  • 抽象缓存层读取缓存数据,
    • 如果成功读到缓存数据,直接返回
    • 如果在缓存中读取失败,再去读数据库
      • 如果在数据库中成功读取到了数据,返回给抽象缓存层
      • 抽象缓存层负责写入缓存数据
  • 抽象缓存层把数据返回给用户

写操作

  • 用户请求更新数据库
  • 抽象缓存层更新数据库
  • 抽象缓存层更新缓存

异步缓存写入

用户申请抽象缓存层更新数据
抽象缓存层只更新缓存数据
后台线程批量把缓存数据更新到数据库

标签:缓存,数据库,Redis,更新,缓存数据,抽象,一致性,数据,双写
From: https://www.cnblogs.com/DCFV/p/18310246

相关文章

  • redis
    1.redis的数据类型简介:Redis是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串(strings),散列(hashes),列表(lists),集合(sets),有序集合(sortedsets)与范围查询,bitmaps,hyperloglogs和地理空间(geospatial)索引半径......
  • 记一次 redis 事件注册不当导致的内存泄露
    线上的程序跑着跑着内存越来越大,并且没有下降的趋势,重启一下程序也只能短暂恢复。通过htop命令再按一下M键按内存占用大小排个序,程序会占好几个G。那好,让我们来分析一下。收集dump通过top或htop进程管理器,或ps命令查找到目标进程id,然后使用如下命令生成dump:created......
  • docker-compose -- 创建 redis && mysql
    version:'3'services:nest-admin-web:image:buqiyuan/vue3-antdv-admin:stablecontainer_name:nest-admin-webvolumes:-./deploy/web:/etc/nginx/conf.dports:-'80:80'restart:alwaysnetworks:......
  • 如何在团队协作中确保 SCSS 代码风格的一致性和规范性?
    确保SCSS代码风格的一致性和规范性在团队协作中非常重要。下面是一些方法可以帮助实现这一目标:使用代码风格指南:制定并共享SCSS代码风格指南,确保团队成员在编写代码时遵循统一的规范。这可以包括命名约定、缩进、代码布局等方面。代码审查:在团队中进行代码审查是确......
  • redis学习-12(实现分布式锁、消息队列、缓存一致性问题、单线程快的原因、跳跃表)
    引用以下内容:redis实现分布式锁:Redis分布式锁-这一篇全了解(Redission实现分布式锁完美方案)Redis实现分布式锁的7种方案,及正确使用姿势!redis实现消息队列Redis的学习教程(十)之使用Redis实现消息队列缓存一致性问题想要保证数据库和Redis缓存一致性,推荐采用先更新数......
  • redis学习-11(缓存)
    缓存的收益和成本分析收益:1)加速读写2)降低后端负载成本:1)数据不一致性2)代码维护成本3)运维成本使用场景:1)开销大的复杂计算2)加速请求响应缓存更新策略的选择和使用场景LRU/LFU/FIFO算法剔除:当缓存使用量大于预设的最大值时候,对现有数据进行剔除,一致性最差,维护成本低超时剔......
  • 如何使用Redis实现分布式锁
    在分布式系统中,保证多个进程或线程对共享资源的同步访问是一个常见问题。锁是一种常用的同步机制,但在单机环境中常用的锁机制在分布式系统中往往不再适用。Redis,作为一种高性能的键值存储系统,提供了实现分布式锁的可能。本文将介绍如何使用Redis实现分布式锁,并通过Java代码示例展......
  • 利用Redis Stream实现一个可靠的消息队列
    RedisStreams简介RedisStreams是Redis5.0引入的一种新数据结构,专门用于处理日志和消息流数据。它结合了多种数据结构的优点,提供了高效的消息存储和消费机制。RedisStreams可以用于实时数据处理、事件驱动的系统、日志聚合和消息队列等场景。主要特点持久化:redis的p......
  • redistemplate介绍与演示
    redistemplate是一个用于在Redis中存储和检索数据的模板库。它提供了一组简单易用的函数和接口,使开发者能够更方便地使用Redis进行数据操作。使用redistemplate,你可以实现以下功能:存储和检索数据:redistemplate提供了存储和检索各种类型数据的函数,包括字符串、哈希表、列表、......
  • Spring Boot+Redis 分布式锁:模拟抢单
    如何删除锁模拟抢单动作(10w个⼈开抢)jedis的nx⽣成锁对于java中想操作redis,好的⽅式是使⽤jedis,⾸先pom中引⼊依赖:<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId></dependency>对于分布式锁的⽣成通常......