首页 > 数据库 >Redis缓存

Redis缓存

时间:2022-11-09 20:02:20浏览次数:38  
标签:缓存 过期 redis Redis 线程 内存 key

认识缓存

缓存更新策略

缓存穿透

缓存击穿

缓存雪崩

 

 

  

认识缓存

缓存的作用

1,降低后端负载 2,提高服务于相应速度

缓存的成本

1.开发成本  2,运维成本 3,一致性成本

 

缓存更新策略

三种策略

1,内存淘汰:redis自带的缓存淘汰机制

2,过期淘汰:利用expire命令给数据设置过期时间

3,主动更新:主动完成数据库与缓存的同时更新

策略选择

低一致性需求:选择内存淘汰或过期淘汰

高一致性需求:主动更新

 

缓存穿透

产生原因

客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远都不会生效,请求都会打到数据库

解决方案

1,缓存空对象

  思路:对于不存在的数据也在redis建立缓存,值为空,并设置一个较短的TTL时间

  优点:实现简单,维护方便

  缺点:额外的内存消耗,短期的数据不一致问题

2,布隆过滤

  思路:利用布隆过滤算法,在请求进入redis之前先判断是否存在,如果不存在直接拒绝请求

  优点:内存占用少

  缺点:实现复杂,存在误判的可能性

3,其他

  做好数据的基础格式校验,加强用户权限校验,做好热点参数的限流

 

缓存雪崩

产生原因:在同一时段大量的缓存key同时失效或者redis服务宕机,导致大量请求到达数据库,带来巨大压力

解决方案:

  给不同的key添加随机的TTL,

  利用redis集群提高可用性,

  给缓存业务添加降级限流策略,

  给业务添加多级缓存。

 

缓存击穿

产生原因:

  热点key :1,在某一段时间高并发访问  2,缓存重建时间较长

  热点key突然过期,因为重建时间较长,导致在这段时间内大量请求到达数据库,带来巨大冲击

解决方案:

  1,互斥锁

    思路:给缓存重建过程加锁,确保重建过程只有一个线程执行,其他线程等待

    优点:实现简单,没有额外内存消耗,一直性好

    缺点:等待导致性能下降,有死锁风险

  2,逻辑过期

    思路:热点key缓存永不过期,而是设置一个逻辑过期时间,查询到热点数据是对逻辑过期时间进行判断,来决定是否需要缓存重建

       重建缓存也通过互斥锁保证单线程执行

       重建利用独立线程异步执行,其他线程无需等待,直接查询到旧的数据即可

    优点:线程无需等待,性能较好

    缺点:不保证一致性,有额外内存消耗,实现复杂

  

 

标签:缓存,过期,redis,Redis,线程,内存,key
From: https://www.cnblogs.com/tyleaf/p/16874984.html

相关文章

  • ZooKeeper : Curator框架之数据缓存与监听CuratorCache
    CuratorCache​​CuratorCache​​​会试图将来自节点的数据保存在本地缓存中。可以缓存指定的单个节点,也可以缓存以指定节点为根的整个子树(默认缓存方案)。可以给​​Curat......
  • Redis:哈希表HLEN、HSTRLEN、HINCRBY、HINCRBYFLOAT、HSCAN命令介绍
    HLENHLENkey时间复杂度:O(1)返回哈希表​​key​​中域的数量。演示当哈希表​​key​​不存在时,返回0。HSTRLENHSTRLENkeyfield可用版本:>=3.2.0时间复杂度:O(1)返回哈希......
  • vue项目中禁用浏览器缓存配置案例
    项目发布新版本,部署线上后用户浏览器需要清理缓存1.public文件夹中修改index.html文件meta配置<metahttp-equiv="Cache-Control"content="no-cache,no-store,must-......
  • Redis Stream
    RedisStream是Redis5.0版本新增加的数据结构。RedisStream主要用于消息队列(MQ,MessageQueue),Redis本身是有一个Redis发布订阅(pub/sub)来实现消息队列的功能,但......
  • 手写本地缓存实战2—— 打造正规军,构建通用本地缓存框架
    大家好,又见面了。本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面。如果感兴趣,欢迎关注以获取后续更新。村......
  • 在线安装redis
    redis允许外网访问设置1.取消绑定本地地址找到redis配置文件,redis.conf,注释掉指定的bind,当不指定时表示允许所有访问。2.关闭保护模式在redis服务器上使用redis-cli,执行命......
  • redis oom
    先点赞再看,养成好习惯背景全国最大的短信平台,大家都用过我们的产品。数据量比较大,最多时候一天近7亿条短信。简单介绍一下redis(我们平台用的是codis管理redis集群)简单来说......
  • 一台服务器中部署多个redis
    一、安装redis首先在服务器上安装redis,若已安装,忽略这一步。安装过程略。二、新建redis配置文件根据原redis配置文件,创建新的配置文件#找到配置文件所在位置$find/-......
  • Redis的安装和Redis的基本数据库操作实操详解
    一.什么是Redis?Redis是远程字典服务器,Remotedictionaryserver一个开源的基于内存的数据库,常用作键值存储、缓存和消息队列等。Redis通常被称为数据结构服务器......
  • Redis Cluster in K3S
    RedisClusterinK3S学习资料https://www.cnblogs.com/cheyunhua/p/15619317.htmlhttps://blog.csdn.net/cqnaqjy/article/details/126001999https://segmentfault.c......