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 读

从缓存中读取数据,读取不到再从数据库读取,再将数据库读取的数据同步到缓存中。

缺点

  1. 首次请求数据一定不在缓存中,则每次第一次请求都会请求数据库。
    解决办法:可以将热点数据可以提前放入cache 中。
  2. 写操作比较频繁的话导致缓存中的数据会被频繁被删除,这样会影响缓存命中率 。
    解决办法:
    数据库和缓存数据强一致场景 :更新DB的时候同样更新cache,不过我们需要加一个锁/分布式锁来保证更新cache的时候不存在线程安全问题。
    可以短暂地允许数据库和缓存数据不一致的场景 :更新DB的时候同样更新cache,但是给缓存加一个比较短的过期时间,这样的话就可以保证即使数据不一致的话影响也比较小。

2. Read/Write Through Pattern(读写穿透)

2.1. 写

以缓存为主体,查询缓存数据,如果查询不到缓存数据则直接更新数据库数据;如果查询到缓存数据,则更新缓存数据,之后再通过缓存的数据更新数据库。

2.2. 读

读取缓存,如果缓存没有则将数据库的数据同步到缓存中,再重新读取缓存。

缺点:首次请求数据一定不再 cache 的问题,对于热点数据可以提前放入缓存中

3. Write Behind Pattern(异步缓存写入)

异步缓存写入和 读写穿透很相似,两者都是由 缓存服务来负责缓存 和 数据库的读写。
不同点

  1. 读写穿透是同步更新 缓存和数据库
  2. 异步缓存写入则是只更新缓存,不直接更新数据库,而是改为异步批量的方式来更新数据库。

异步缓存写入对数据一致性带来了更大的挑战,比如缓存数据可能还没异步更新数据库的话,缓存服务可能就就挂掉了。这种策略在我们平时开发过程中也非常非常少见,但是不代表它的应用场景少,比如消息队列中消息的异步写入磁盘、MySQL 的 InnoDB Buffer Pool 机制都用到了这种策略。

Redis缓存读写策略相关推荐

  1. Redis基础(十二)——缓存读写策略

    文章目录 缓存读写策略 1 旁路缓存模式 2 读写穿透 3 异步缓存写入 缓存读写策略 1 旁路缓存模式 写:先更新DB,然后直接删除cache 读:从cache中读数据,读不到就从DB中读数据,再把 ...

  2. 常用缓存读写策略(cache读写策略)

    文章目录 前言 一.Cache Aside Pattern (旁路缓存模式) 二.Read/Write Through Pattern(读写穿透模式) 三.Write Behind Pattern(异 ...

  3. 缓存读写策略:CacheAside、Read/WriteThrough及WriteBack策略

    1.缓存读写策略 对于缓存的读写来说,通常存在三种使用方式,也就是缓存的三种读写策略:CacheAside.Read/WriteThrough及WriteBack策略. 2.最简单的缓存更新策略 先假 ...

  4. Redis 缓存删除策略

    Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言 ...

  5. Redis缓存失效策略思考

    1 删除过期数据 我们设置Redis元素时可以指定过期时间,那么Redis如何删除这些超时元素?Redis采用了两种策略:定期删除和惰性删除. (1) 定期删除 Redis每隔一段时间就检查哪些KEY ...

  6. redis缓存清除策略 、获取dumb.rdb或者***.aof文件的位置

    redis缓存清除策略 获取dumb.rdb或者***.aof文件的位置

  7. 缓存读写策略 Cache Aside Pattern,开发必备

    我们在前面讲到了当我们业务面临大量写并发的时候,将数据库开发成分布式存储系统,然后又介绍了NoSql数据库与关系型数据库互相配合,以用来更好的服务与我们的业务发展.但随着并发的持续增加,存储数据量的增 ...

  8. Redis缓存淘汰策略

    文章目录 noeviction allkeys-lru allkeys-lfu volatile-lru volatile-lfu allkeys-random volatile-random vol ...

  9. 说说 Redis 缓存删除策略

    Redis 缓存删除策略分为定时删除.定期删除与惰性删除.前两个是主动删除,后一个是被动删除. 1 定时删除 为 key 设置一个过期时间,时间一到,由定时器任务删除这个 key. 优点:节省内存,因 ...

  10. Redis缓存过期策略

    转载出处链接 一.背景 线上你写代码的时候,想当然的认为写进 redis 的数据就一定会存在,后面导致系统各种 bug,谁来负责? 常见的有两个问题: 往 redis 写入的数据怎么没了? 可能有同学 ...

最新文章

  1. 伸缩门遥控器c语言程序,急求求c++编程高手,求50的阶乘,要求结果是精确的整数,打印在屏幕上。...
  2. 以太坊 智能合约 简介
  3. 原始需求的来龙去脉和核心要求
  4. Java实现第二次登陆强制下线_Android登陆页面记住密码以及强制下线功能的实现...
  5. Iterator 和 for...of 循环
  6. C++之父:比特币是用C++开发的,我为此感到遗憾。
  7. java 线程一起画图_java 多线程画图 不显示过程
  8. Linux开机启动的步骤
  9. mysql 显示 乱码_MySQL 中文显示乱码
  10. 《从0到1:CTFer成长之路》SQL注入-1
  11. 台式计算机看网络电视,关于电脑看网络电视卡的原因及解决方法
  12. 阿里云盘 网页版地址 阿里云盘pc版 阿里云盘下载
  13. 如何才能达到阿里 P7 水平 ?
  14. 为什么站点访问慢?请收好这份 Web 服务器性能提升的总结
  15. 如何写好博客——常用标点符号易错点正确用法汇总
  16. 我的一点企业上云经验
  17. github pages搭建博客的域名解析(简单有效)
  18. 浅析RGB 及RGB转换为ARGB
  19. 从这50行缓存实现的代码中,我读出了禅意
  20. 抛物线断面临界水深莫洛图

热门文章

  1. 实验六 —— 火焰传感器
  2. Java 使用 throw 抛出异常
  3. Shel脚本-初步入门之《04》
  4. 荣光医院药剂实验室全配方
  5. 电脑版桌面云便签账号怎么绑定微信或解绑微信?
  6. 中国生物农药行业需求态势及“十四五”前景规划报告(2022-2027年)
  7. 为新开的餐厅设计网站html,18个以餐饮美食为主题的优秀网页设计
  8. 三国演义人物出场次数统计
  9. Detail-revealing Deep Video Super-resolution 论文笔记
  10. html5画智利国旗,智利国旗与得州州旗,你能分的清么?