Redis缓存读写策略
Redis基础与使用SpringBoot整合Redis
Redis进阶学习之数据持久化
Redis进阶学习之主从复制、读写分离
Redis进阶学习之哨兵模式和分片集群
Redis主从复制集群搭建
Redis哨兵集群搭建
Redis分片集群搭建
Redis使用RedisTemplate配置和访问集群
Redis缓存策略
Redis缓存异常场景分类
Redis缓存读写策略
Redis和数据库如何保证数据的一致,redis有三种缓存策略
1. Cache-Aside(旁路缓存模式)
2. Read/Write Through Pattern(读写穿透)
3. Write-Behind(异步缓存写入)
1. Cache-Aside(旁路缓存模式)
1.1 写操作
先更新数据库的记录,再删除缓存中的旧数据
如果先删再写,会导致数据库和缓存数据不一致(redis的写入速度要快于数据库)
1.2 读
从缓存中读取数据,读取不到再从数据库读取,再将数据库读取的数据同步到缓存中。
缺点
- 首次请求数据一定不在缓存中,则每次第一次请求都会请求数据库。
解决办法:可以将热点数据可以提前放入cache 中。 - 写操作比较频繁的话导致缓存中的数据会被频繁被删除,这样会影响缓存命中率 。
解决办法:
数据库和缓存数据强一致场景 :更新DB的时候同样更新cache,不过我们需要加一个锁/分布式锁来保证更新cache的时候不存在线程安全问题。
可以短暂地允许数据库和缓存数据不一致的场景 :更新DB的时候同样更新cache,但是给缓存加一个比较短的过期时间,这样的话就可以保证即使数据不一致的话影响也比较小。
2. Read/Write Through Pattern(读写穿透)
2.1. 写
以缓存为主体,查询缓存数据,如果查询不到缓存数据则直接更新数据库数据;如果查询到缓存数据,则更新缓存数据,之后再通过缓存的数据更新数据库。
2.2. 读
读取缓存,如果缓存没有则将数据库的数据同步到缓存中,再重新读取缓存。
缺点:首次请求数据一定不再 cache 的问题,对于热点数据可以提前放入缓存中
3. Write Behind Pattern(异步缓存写入)
异步缓存写入和 读写穿透很相似,两者都是由 缓存服务来负责缓存 和 数据库的读写。
不同点
- 读写穿透是同步更新 缓存和数据库
- 异步缓存写入则是只更新缓存,不直接更新数据库,而是改为异步批量的方式来更新数据库。
异步缓存写入对数据一致性带来了更大的挑战,比如缓存数据可能还没异步更新数据库的话,缓存服务可能就就挂掉了。这种策略在我们平时开发过程中也非常非常少见,但是不代表它的应用场景少,比如消息队列中消息的异步写入磁盘、MySQL 的 InnoDB Buffer Pool 机制都用到了这种策略。
Redis缓存读写策略相关推荐
- Redis基础(十二)——缓存读写策略
文章目录 缓存读写策略 1 旁路缓存模式 2 读写穿透 3 异步缓存写入 缓存读写策略 1 旁路缓存模式 写:先更新DB,然后直接删除cache 读:从cache中读数据,读不到就从DB中读数据,再把 ...
- 常用缓存读写策略(cache读写策略)
文章目录 前言 一.Cache Aside Pattern (旁路缓存模式) 二.Read/Write Through Pattern(读写穿透模式) 三.Write Behind Pattern(异 ...
- 缓存读写策略:CacheAside、Read/WriteThrough及WriteBack策略
1.缓存读写策略 对于缓存的读写来说,通常存在三种使用方式,也就是缓存的三种读写策略:CacheAside.Read/WriteThrough及WriteBack策略. 2.最简单的缓存更新策略 先假 ...
- Redis 缓存删除策略
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言 ...
- Redis缓存失效策略思考
1 删除过期数据 我们设置Redis元素时可以指定过期时间,那么Redis如何删除这些超时元素?Redis采用了两种策略:定期删除和惰性删除. (1) 定期删除 Redis每隔一段时间就检查哪些KEY ...
- redis缓存清除策略 、获取dumb.rdb或者***.aof文件的位置
redis缓存清除策略 获取dumb.rdb或者***.aof文件的位置
- 缓存读写策略 Cache Aside Pattern,开发必备
我们在前面讲到了当我们业务面临大量写并发的时候,将数据库开发成分布式存储系统,然后又介绍了NoSql数据库与关系型数据库互相配合,以用来更好的服务与我们的业务发展.但随着并发的持续增加,存储数据量的增 ...
- Redis缓存淘汰策略
文章目录 noeviction allkeys-lru allkeys-lfu volatile-lru volatile-lfu allkeys-random volatile-random vol ...
- 说说 Redis 缓存删除策略
Redis 缓存删除策略分为定时删除.定期删除与惰性删除.前两个是主动删除,后一个是被动删除. 1 定时删除 为 key 设置一个过期时间,时间一到,由定时器任务删除这个 key. 优点:节省内存,因 ...
- Redis缓存过期策略
转载出处链接 一.背景 线上你写代码的时候,想当然的认为写进 redis 的数据就一定会存在,后面导致系统各种 bug,谁来负责? 常见的有两个问题: 往 redis 写入的数据怎么没了? 可能有同学 ...
最新文章
- 伸缩门遥控器c语言程序,急求求c++编程高手,求50的阶乘,要求结果是精确的整数,打印在屏幕上。...
- 以太坊 智能合约 简介
- 原始需求的来龙去脉和核心要求
- Java实现第二次登陆强制下线_Android登陆页面记住密码以及强制下线功能的实现...
- Iterator 和 for...of 循环
- C++之父:比特币是用C++开发的,我为此感到遗憾。
- java 线程一起画图_java 多线程画图 不显示过程
- Linux开机启动的步骤
- mysql 显示 乱码_MySQL 中文显示乱码
- 《从0到1:CTFer成长之路》SQL注入-1
- 台式计算机看网络电视,关于电脑看网络电视卡的原因及解决方法
- 阿里云盘 网页版地址 阿里云盘pc版 阿里云盘下载
- 如何才能达到阿里 P7 水平 ?
- 为什么站点访问慢?请收好这份 Web 服务器性能提升的总结
- 如何写好博客——常用标点符号易错点正确用法汇总
- 我的一点企业上云经验
- github pages搭建博客的域名解析(简单有效)
- 浅析RGB 及RGB转换为ARGB
- 从这50行缓存实现的代码中,我读出了禅意
- 抛物线断面临界水深莫洛图