当前位置: 首页 > news >正文

台州外贸网站建设印度疫情最新消息

台州外贸网站建设,印度疫情最新消息,政府网站推广方案,上海网站建设小程序Redis的过期删除策略和内存淘汰机制以及如何保证双写的一致性 过期删除策略内存淘汰机制怎么保证redis双写的一致性?更新策略先删除缓存后更新数据库先更新数据库后删除缓存如何选择?如何保证先更新数据库后删除缓存的线程安全问题? 过期删除策略 为了…

Redis的过期删除策略和内存淘汰机制以及如何保证双写的一致性

  • 过期删除策略
  • 内存淘汰机制
  • 怎么保证redis双写的一致性?
    • 更新策略
    • 先删除缓存后更新数据库
    • 先更新数据库后删除缓存
    • 如何选择?
    • 如何保证先更新数据库后删除缓存的线程安全问题?



过期删除策略

为了保证缓存和数据的一致性和节省缓存空间,就可以给存储的数据设置过期时间,而对于过期键的删除,redis以下三种策略,分别是定时删除、惰性删除、定期删除。

定时删除策略:在给键设置过期时间的同时,创建一个定时事件,当到达事件时,会执行事件删除过期键
优点:缓存能够及时被删除,占用的缓存可以被及时释放
缺点:当键比较多时,定时删除策略会占用;一部分cpu时间,浪费性能
惰性删除策略:不会主动删除过期键,每次访问该键时都会检验是否过期,如果过期就会删除过期键
优点:不会浪费过多性能
缺点:可能会造成大量过期键的堆积,浪费内存空间
定期删除策略:每割一段时间都会随机抽选一些键检查是否过期。
定期删除过程:1.每一秒进行十次检查(可以自定义修改)
2.每次检查都会随机抽取20个键进行检查,如果检查的键中过期的超过五个,也就是四分之一,则继续执行2,否则进入下一次检查
为了避免循环过度和死循环,redis每次检查都设置了超时时间,默认未25ms
优点:通过限制删除操作执行的时长和频率,减少对cpu的影响,同时清理一部分内存
缺点:内存清除方面没有定时删除好,对系统资源的消耗又没有惰性删除少。并且删除的频率不好控制

内存淘汰机制

当redis的内存不足时,当仍然有需要缓存的请求到达时,需要使用内存淘汰机制进行处理
删除过期键策略
volatile-lru:从设置过期删除的键中,选择最近最少使用的键值删除
volatile-lfu: 选择最少使用的键值删除
volatile-random: 随机挑选键值删除
volatile-ttl:选择将要过期的键值删除
删除所有键策略
allkeys-lru:从所有键中,选择最近最少使用的键值删除
allkeys-lfu:选择最少使用
allkeys-random:随机挑选键值删除
不做任何处理
noeviction:不淘汰键值,报错禁止写入
当前redis的默认内存淘汰机制就是noeviction

怎么保证redis双写的一致性?

如果有更新数据库的操作时,我们需要怎么操作缓存才能保证双写的一致性,是更新缓存还是删除缓存

更新策略

更新策略的问题
1.可能造成无效更新。

如果连续执行一百个更新数据库的操作,那么就要更新一百次缓存,那么中间九十九次更新就是无效更新了。

2.可能造成线程安全问题。如下图

在这里插入图片描述

线程A:
Time1:更新数据库
Time4:更新缓存
线程B
Time2:更新数据库
Time3:更新缓存
按照以上的执行顺序,更新后的数据库是线程B更新的值,而缓存时线程A更新的值,此时数据库和缓存不一致,造成线程安全问题,因此避免使用更新策略

先删除缓存后更新数据库

可能会造成线程安全问题,如下

在这里插入图片描述
当线程A删除缓存后还没有更新数据库,线程B查询数据没有命中缓存从原数据库中查询旧数据并且放入缓存中,导致缓存中存在旧数据,造成了数据库和缓存不一致的问题

先更新数据库后删除缓存

存在线程安全问题,如下
在这里插入图片描述
线程A查询数据,如果此时由于缓存过期导致缓存失效,开始查询数据库,线程B相继更新数据库删除缓存,Time4线程A将查询出的旧数据放入缓存,导致缓存和数据库不一致

如何选择?

选择先更新数据库后删除缓存。更新缓存存在可能会造成更新失效和线程安全问题,优先将更新策略排除。而先删除缓存策略相对后删除缓存策略,它发生的可能性更高,因此我们选择先更新数据库后删除缓存的策略。

如何保证先更新数据库后删除缓存的线程安全问题?

我们可以使用延迟双删策略,即更新数据库和删除缓存之后让线程休眠一段时间再次删除缓存。但是这并不能严格的保证线程安全问题,如果要保证数据的高一致性,可以使用分布式锁来实现。

http://www.15wanjia.com/news/57186.html

相关文章:

  • 北京西站企业网站cms
  • 惠城网站建设有哪些旅行网站排名
  • 自己做网站语言包怎么做a5站长网
  • 做设计用图片的网站百度域名提交收录网址
  • 公司网站建设介绍软文营销名词解释
  • 网店运营推广高级实训攻略优化营商环境的金句
  • 开源网站建设是什么工作小程序搭建
  • 平原县网站seo优化排名百度seo报价
  • 祖庙网站建设公司电商软文范例
  • 建网站挣钱靠谱吗苏州seo怎么做
  • 如何做网站?私人网站服务器
  • 商城web网站开发百度快照怎么做
  • 青岛模板建站多少钱网络营销典型案例
  • 新的网站平台如何做地推百度公司地址
  • 5在线做网站如何设计企业网站
  • 建设企业展示网站爱站seo
  • 网站备案负责人修改360搜索引擎推广
  • 教育网站设计方案seo优化公司哪家好
  • 网站的分类有哪些找客户资源的软件哪个最靠谱
  • 做网站用的小图标今天的新闻有哪些
  • 网站的支付系统怎么做在线培训app
  • 查询网站备案查询深圳网络推广服务是什么
  • 山东德州网站建设哪家最好网站结构有哪几种
  • 动效做的好的网站企业网站优化
  • 网站建设扌首选金手指萧山区seo关键词排名
  • 南昌网站开发建设长沙网络推广营销
  • 模拟创建一个公司石家庄百度快照优化排名
  • 个人网站设计论文道客巴巴百度客服中心人工在线咨询
  • 武汉汉口做网站哪家好社群营销的案例
  • 58同城深圳招聘网站个人自己免费建网站