首页 > 数据库 >redis 缓存引发的头疼问题

redis 缓存引发的头疼问题

时间:2023-01-26 23:33:42浏览次数:59  
标签:头疼 缓存 请求 过期 数据库 redis 加锁 key

缓存穿透
某个key缓存没有,数据库也没有。一般这种情况发生了用户恶意请求或者攻击。造成一直不停查库

解决方案
最顶层拦截,不合理的id直接打回去或者布隆过滤器
db如果差不多,设置个null进Redis,这样下次就不会打到db,但是要注意合理的过期时间。


缓存雪崩
大批量不同的key同一时间到期,造成缓存失效,请求压到数据库。
解决方案
没有很好的办法,设置key的时候注意错开过期时间,有些热点数据甚至可以设置不过期


缓存击穿
某个key缓存过期,但是数据库有。正好这个点请求并发超高,还没来的及写缓存都压到了数据库上。

解决方案
加锁!第一个请求来时,如果发现为空,加锁住让后面的请求等待一下,参考多线程单例模式


分布式缓存的效率问题
分布式缓存需要经过网络传输,既然有网络,必然会有性能损耗,

 

标签:头疼,缓存,请求,过期,数据库,redis,加锁,key
From: https://www.cnblogs.com/puzi0315/p/17068389.html

相关文章

  • 【分布式技术专题】「分布式缓存专题」针对于缓存淘汰算法之LRU和LFU及FIFO原理分析
    前提概要无论是浏览器缓存(如果是chrome浏览器,可以通过chrome:://cache查看),还是服务端的缓存(通过memcached或者redis等内存数据库)。缓存不仅可以加速用户的访问,同时也可......
  • Redis实现全局唯一id
    全局Id生成器为了增加id的安全性,我们可以不直接使用redis自增生成的数值,可以拼接一些其他的数值id的组成部分符号位:1bit,永远为0时间戳:31bit,以秒为单位,可以使用69年......
  • Redis学习笔记
    1.简介概述Redis是基于内存的key-value数据库基于内存存储,独写性能高,所有Redis很多时候会作为缓存来使用适合存储热点数据:短时间有大量用户访问MySQL则是存在磁盘......
  • go 使用redis
       import(redigo"github.com/gomodule/redigo/redis")  funcNewPool()*redigo.Pool{//return&redigo.Pool{//MaxIdle:3,//IdleTimeou......
  • 微服务 Spring Boot 整合 Redis BitMap 实现 签到与统计
    文章目录​​⛄引言​​​​一、RedisBitMap基本用法​​​​⛅BitMap基本语法、指令​​​​⚡使用BitMap完成功能实现​​​​二、SpringBoot整合Redis实现签到......
  • 缓存穿透,缓存雪崩,缓存击穿
    1.缓存穿透当大量访问一个redis缓存不存在的时候,请求直接到数据库,就会对数据库造成压力。解决办法:1.给数据库不存在的值,设置null缓存。2.null缓存设置有效期。......
  • 磁盘缓存加快了磁盘访问速度
    磁盘缓存(diskcache):磁盘缓存的缓存(cache)是高速缓存、仓库的意思。磁盘缓存指的是把从磁盘中读出的数据存储到内存空间中的方式。这样一来,当接下来需要读取同一数据时,......
  • idea中使用插件操作mysql、redis
    idea中使用插件操作mysqlidea右侧选择Database 输入连接信息 可以写sql并执行  idea中使用redis插件操作redis安装插件 安装“Redis” 输入连接......
  • 学习笔记——NoSQL数据库;Redis概述;redis中常用的数据类型(key、string)
    2023-01-24一、NoSQL数据库1、NoSQL数据库的简介NoSQL(NoSQL=NotOnlySQL),即“不仅仅是SQL”,泛指非关系型的数据库。NosQL不依赖业务逻辑方式存储,而以简单的key-value模......
  • liunx系统安装Redis详细步骤
    liunx系统安装Redis详细步骤官网下载Redis安装包使用工具将redis安装包拖入liunx系统创建Redis存放目录mkdir/usr/local/redis解压到redis存放目录tar-zxvfred......