Redis 缓存 一致性

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: Redis 缓存 一致性

双写一致性 :当修改了数据库的数据也要同时更新缓存的数据,缓存和数据库的数据要保持一致。

修改了mysql的数据同时也要修改redis的数据,要保证redis缓存的数据和mysql的数据一致。

读操作:缓存命中,直接返回;缓存未命中查询数据库,写入缓存,设定超时时间。

写操作:延迟双删

删除缓存

1.为什么要双删?

先删除缓存,或者先修改数据库,都容易出现数据不一致的情况。所以需要删除两次缓存。

2.为什么要延时删除?

因为主从数据库是有延时性的,所以等到数据库同步之后再延时删除。值得注意的是这种方法也只能做到降低出现脏数据的概率,并不能保证完全一致。

redis缓存存的都是读多写少的数据,如果是写多读少的数据也用不着缓存了,直接写到数据库就好。

共享锁:读锁readlock,加锁之后,其他现场可以共享读操作

排他锁:独占锁writeLock也叫,加锁之后,阻塞其他线程读写操作

读数据。写数据

共享锁:读数据。读读不互斥,写互斥。

排他锁:读写互斥

1.为什么要双删?

先删除缓存,或者先修改数据库,都容易出现数据不一致的情况。所以需要删除两次缓存。

2.为什么要延时删除?

因为主从数据库是有延时性的,所以等到数据库同步之后再延时删除。值得注意的是这种方法也只能做到降低出现脏数据的概率,并不能保证完全一致。

redis缓存存的都是读多写少的数据,如果是写多读少的数据也用不着缓存了,直接写到数据库就好。

共享锁:读锁readlock,加锁之后,其他现场可以共享读操作

排他锁:独占锁writeLock也叫,加锁之后,阻塞其他线程读写操作

读数据。写数据

共享锁:读数据。读读不互斥,写互斥。

排他锁:读写互斥

允许延时一致的业务,采用异步通知

1.使用mq中间件,更新数据之后,通知缓存删除

2.利用canal中间件,不需要修改业务代码,伪装为mysql的一个从节点,canal通过读取binlog数据更新缓存

强一致性的,采用redisson提供的读写锁

1)共享锁:读锁readlock,加锁之后,其他线程可以共享读操作

2)排他锁:独占锁writeLock,加锁之后,阻塞其他线程读写操作

异步通知保证数据的最终一致性


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
18天前
|
缓存 NoSQL 关系型数据库
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
本文详解缓存雪崩、缓存穿透、缓存并发及缓存预热等问题,提供高可用解决方案,帮助你在大厂面试和实际工作中应对这些常见并发场景。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
|
19天前
|
存储 缓存 NoSQL
【赵渝强老师】基于Redis的旁路缓存架构
本文介绍了引入缓存后的系统架构,通过缓存可以提升访问性能、降低网络拥堵、减轻服务负载和增强可扩展性。文中提供了相关图片和视频讲解,并讨论了数据库读写分离、分库分表等方法来减轻数据库压力。同时,文章也指出了缓存可能带来的复杂度增加、成本提高和数据一致性问题。
【赵渝强老师】基于Redis的旁路缓存架构
|
12天前
|
缓存 NoSQL PHP
Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出
本文深入探讨了Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出。文章还介绍了Redis在页面缓存、数据缓存和会话缓存等应用场景中的使用,并强调了缓存数据一致性、过期时间设置、容量控制和安全问题的重要性。
33 5
|
27天前
|
缓存 NoSQL Redis
Redis 缓存使用的实践
《Redis缓存最佳实践指南》涵盖缓存更新策略、缓存击穿防护、大key处理和性能优化。包括Cache Aside Pattern、Write Through、分布式锁、大key拆分和批量操作等技术,帮助你在项目中高效使用Redis缓存。
152 22
|
26天前
|
缓存 NoSQL 中间件
redis高并发缓存中间件总结!
本文档详细介绍了高并发缓存中间件Redis的原理、高级操作及其在电商架构中的应用。通过阿里云的角度,分析了Redis与架构的关系,并展示了无Redis和使用Redis缓存的架构图。文档还涵盖了Redis的基本特性、应用场景、安装部署步骤、配置文件详解、启动和关闭方法、systemctl管理脚本的生成以及日志警告处理等内容。适合初学者和有一定经验的技术人员参考学习。
130 7
|
27天前
|
缓存 NoSQL 关系型数据库
mysql和缓存一致性问题
本文介绍了五种常见的MySQL与Redis数据同步方法:1. 双写一致性,2. 延迟双删策略,3. 订阅发布模式(使用消息队列),4. 基于事件的缓存更新,5. 缓存预热。每种方法的实现步骤、优缺点均有详细说明。
|
存储 缓存 NoSQL
Spring Boot2.5 实战 MongoDB 与高并发 Redis 缓存|学习笔记
快速学习 Spring Boot2.5 实战 MongoDB 与高并发 Redis 缓存
Spring Boot2.5 实战 MongoDB 与高并发 Redis 缓存|学习笔记
|
缓存 NoSQL 安全
6.0Spring Boot 2.0实战 Redis 分布式缓存6.0|学习笔记
快速学习6.0Spring Boot 2.0实战 Redis 分布式缓存6.0。
333 0
6.0Spring Boot 2.0实战 Redis 分布式缓存6.0|学习笔记
|
缓存 NoSQL Redis
首页数据显示-添加 redis 缓存(3)| 学习笔记
快速学习 首页数据显示-添加 redis 缓存(3)
151 0
首页数据显示-添加 redis 缓存(3)| 学习笔记
|
缓存 NoSQL Java
首页数据显示-添加 redis 缓存(1) | 学习笔记
快速学习 首页数据显示-添加 redis 缓存(1)
238 0
首页数据显示-添加 redis 缓存(1) | 学习笔记