首页 > 数据库 >Redis

Redis

时间:2023-02-23 13:00:10浏览次数:40  
标签:缓存 请求 过期 数据库 Redis 过滤器 数据

Redis的缓存雪崩、穿透和击穿

缓存雪崩

缓存本来可以抗住高峰期的大量请求、但缓存机器发生意外全盘宕机,导致大量请求全部落在数据库,数据库崩溃。

解决方案:

1、限流组件、设置每秒的请求,允许一部分的请求落在数据库,剩余未通过的请求降级,或者返回一些空值或者友情提示。

 

缓存穿透

客户端请求缓存和数据库中不存在的数据,导致所有请求打在数据库上

解决方案:

1、如果是相同的不存在请求,在数据库中只要没查到,就写一个空值到缓存里,然后设置一个过期时间,这样相同的key来访问时,在缓存失效前就可以直接从缓存中取数据(但是这种对长时间且每次请求不一样的攻击不管用)

2、做好参数检验,对于不合理的参数要及时return结束

3、(经常做法)设置布隆过滤器,将数据库中所有可能的数据哈希映射到布隆过滤器中,然后对每个请求进行判断:

    请求的数据不存在于布隆过滤器中,可以确定数据一定不在数据库中,系统可以立即返回不存在

    请求的数据存在于布隆过滤器中,则继续再向缓存中查询。

 

缓存击穿

某个key特别热点,访问非常频繁,当这个缓存key在失效的瞬间,大量的请求就击穿了缓存,直接请求数据库,就像是在数据库中击穿了一个洞

解决方案:

1、如果缓存的数据基本不更新,可以将热点数据设置为永不过期

2、如果缓存数更新不频繁,并且缓存刷新时间耗时较少,可以利用redis等分布式中间件的分布式互斥锁,保证只有少量的请求能够请求数据库并且重新构建缓存,其余线程在锁释放后访问新缓存。

3、如果缓存更新频繁并且耗时较长,可以利用定时线程在缓存过期前主动的重新构建缓存或者延后缓存的过期时间,保证所有的请求能一直访问到对应的缓存

标签:缓存,请求,过期,数据库,Redis,过滤器,数据
From: https://www.cnblogs.com/-Cooper/p/17147565.html

相关文章

  • E028Web学习笔记-Redis
    一、概述1、简介Redis是完全开源免费的,遵守BSD协议,是一个高性能的NOSQL系列的非关系型key-value数据库;数据存储在内存中的数据库; 2、关系型数据库与非关系型数据库关系型......
  • 主流的NOSQL产品 redis概述
    主流的NOSQL产品键值(key-Value)存储数据库相关产品:TokyoCabinet/TyrantRedisVoldemortBerkeleyDB典型应用:内容缓存只要用于处理大量数据的......
  • redis数据类型-hash类型
    一个string类型的key-value映射表常用场景购物车用户个人信息商品详情常用命令hsetkeyfieldvalue设置hash的值hgetkeyfield获取值hgetallkey获......
  • redis概念 和数据库比较
    概念redis是一款高性能的NOSQL系列的非关系型数据库什么是NOSQLNoSQL(notonlysql)不仅sql是一项全新的数据库理念泛指非关系型的数据库随着互联网......
  • redis 单节点迁移到集群 redis-shake
    1、迁移 1.1、同步到单节点redis-shake下载  release-v2.1.2-20220329.tar.gz#rediscluster某一个节点  服务器安装redis-shaketar -xzvf release-v2.1.2-2......
  • Redis之介绍
    ##################################Redis作为优秀的内存数据库,其拥有非常高的性能,单个Redis实例的OPS能够达到10W左右;              ......
  • Day21 21.2:CrawlSpider-redis分布式爬虫
    CrawlSpider-redis分布式分布式在日常开发中并不常用,只是一个噱头!概念:可以使用多台电脑搭建一个分布式机群,使得多台对电脑可以对同一个网站的数据进行联合且分布的......
  • 4、Redis底层原理(持久化+分布式锁)
    Redis底层原理持久化Redis虽然是个内存数据库,但是Redis支持RDB和AOF两种持久化机制,将数据写往磁盘,可以有效地避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久......
  • 部署堡垒机4——编译安装redis-6.0.9以上版本
    一、环境准备Redis官网:https://redis.io/历史版本:http://download.redis.io/releases/1、安装依赖yum-yinstallgccgcc-c++makecmakelrzsz复制2、解压re......
  • redis安装使用
    1、redis五大数据类型,开发必会的技能string字符串类型hash哈希类型,如同Python的dict(字典)Set无序集合Zset有序集合List双向列队,向右插入数据,向左,右提......