首页 > 数据库 >redis的更新策略以及淘汰策略

redis的更新策略以及淘汰策略

时间:2024-08-12 16:41:51浏览次数:11  
标签:缓存 策略 删除 过期 redis key 一致性 淘汰 从库

redis更新策略

1.先更新缓存再更新数据库:在双写场景下,很容易出现一致性问题,在读写场景下,小概率出现一致性问题,所以Pass。
2.先删除缓存再更新数据库:在双写场景下,不会出现一致性问题,在读写场景下,很容易出现一致性问题,所以Pass。
3.先更新数据库再更新缓存:在双写场景下,很容易出现一致性问题,在读写场景下,小概率出现一致性问题,所以Pass。
4.先更新数据库再删除缓存:在双写场景下,不会出现一致性问题,在读写场景下,小概率出现一致性问题,所以暂时保留。
5.延迟双删 : 先进行缓存清除,再执行update,最后(延迟N秒)再执行缓存清除。
  延迟双删策略只是一种同步数据库与缓存的手段,在系统并发量不高的情况下可以使用这种方式解决,如果是并发量高的情况下我们也可以另寻其他解决方案 如:canal

redis过期策略

先区分两个概念,被动删除与主动删除

1.被动删除:key再被操作时,Redis主动检查key是否过期,过期则删除;
  优劣:对CPU友好,只有在被操作时删除,不浪费CPU时间;对内存不友好,如果同时大量key过期,这些key在被使 用前不会被删除造成资源浪费;
2.主动删除:Redis会定期随机扫描一批设置了过期时间的key并进行删除处理;当已用内存超过最大内存maxmemory时也会触发主动清除策略;
  Redis采用的是定期删除 + 懒惰删除策略。

从库的过期策略

从库不会进行过期扫描,从库对过期的处理是被动的。主库在 key 到期时,会在 AOF 文件里增加一条 del 指令,同步到所有的从库,从库通过执行这条 del 指令来删除过期的 key。
因为指令同步是异步进行的,所以主库过期的 key 的 del 指令没有及时同步到从库的话,会出现主从数据的不一致,主库没有的数据在从库里还存在。

标签:缓存,策略,删除,过期,redis,key,一致性,淘汰,从库
From: https://www.cnblogs.com/sitting-on-the-clouds/p/18355248

相关文章

  • 一文读懂分布式爬虫利器Scrapy-Redis:源码解析、队列管理与去重策略
    分布式利器Scrapy-Redis原理Scrapy-Redis库已经为我们提供了Scrapy分布式的队列、调度器、去重等功能,其GitHub地址为:https://github.com/rmax/scrapy-redis。本节课我们深入掌握利用Redis实现Scrapy分布式的方法,并深入了解Scrapy-Redis的原理。1.获取源码......
  • 一文读懂分布式爬虫利器Scrapy-Redis:源码解析、队列管理与去重策略
    分布式利器Scrapy-Redis原理Scrapy-Redis库已经为我们提供了Scrapy分布式的队列、调度器、去重等功能,其GitHub地址为:https://github.com/rmax/scrapy-redis。本节课我们深入掌握利用Redis实现Scrapy分布式的方法,并深入了解Scrapy-Redis的原理。1.获取源码可以......
  • 手把手教你实现Scrapy-Redis分布式爬虫:从配置到最终运行的实战指南
    1.scrapy-redis的环境准备pipinstallscrapy-redis安装完毕之后确保其可以正常导入使用即可。2.实现接下来我们只需要简单的几步操作就可以实现分布式爬虫的配置了。2.1修改Scheduler在前面的课时中我们讲解了Scheduler的概念,它是用来处理Request、Item等对象的调度......
  • 跨境电商如何通过谷歌广告提升销量?SEO与SEM术语与策略解析
    在数字化浪潮席卷全球的今天,跨境电商正成为企业拓展国际市场的新引擎。然而,如何在激烈的市场竞争中脱颖而出,成为每个跨境电商企业必须面对的课题。本文将深入探讨如何利用谷歌广告这一强大的营销工具,结合SEO(搜索引擎优化)与SEM(搜索引擎营销)的策略,有效提升跨境电商的销量。SEO与SEM......
  • Redis 实现简单排行榜功能 | 实战案例
    一、业务场景口算小程序,用户完成口算并获得满分,根据耗时长短进行rank排名,耗时越短,排名越高。主要有以下功能:1.用户数据Mysql与Redis同步:使用一个redishash用来保存用户基本信息,field为userId,value为用户基础数据(本案例为昵称);用户修改昵称时,同步更新hash中对应userId的nickn......
  • Python Redis Stream【生产者=》消费者模式】
    1importredis2importtime3fromtypingimportDict,List,Tuple,Any,Optional45fromconfig.modelimportsettings6frompydanticimportBaseModel789classStreamMessage(BaseModel):10message_id:str11message_da......
  • SpringSecurity+前端项目+redis完成认证授权的代码
    1.前端准备工作--都在全局main.js页面中设置的1.1.创建Vue工程后,并导入elementui和axios,添加连接后端项目的路径,把axios挂载到Vue1.2.前置路由守卫(所有路由跳转前核实一下身份)//前置路由守卫--所有的路由跳转都先经过这里//to:即将要访问的路径from:从哪里来......
  • Centos7下安装redis
    一、安装redis第一步:下载redis安装包wgethttp://download.redis.io/releases/redis-4.0.6.tar.gz[root@iZwz991stxdwj560bfmadtZlocal]#wgethttp://download.redis.io/releases/redis-4.0.6.tar.gz--2017-12-1312:35:12--http://download.redis.io/releases/redis-4......
  • 【Redis】掌握Java中的Redis魔法:Jedis与Spring Data Redis(实战指南)
    文章目录掌握Java中的Redis魔法:Jedis与SpringDataRedis实战文章简介为什么使用Redis为什么选择Jedis和SpringDataRedis一、引言1.1Redis简介1.1.1Redis的特点和优势1.1.2Redis的应用场景1.2Java与Redis的结合1.2.1为什么选择Java1.2.2Java开发中Redis的重要......
  • SpringBoot 使用策略+工厂模式的几种实现方式
    SpringBoot使用策略+工厂模式的几种实现方式  1.方式一:  2.方式二:使用Spring依赖注入   用过Spring的肯定也离不开这个注解,通过这个注解可以帮我们自动注入我们想要的Bean。除了这个基本功能之外,@Autowired还有更加强大的功能,还可以注入指定类型的数组,Lis......