首页 > 数据库 >【知识点】Redis-缓存-缓存击穿

【知识点】Redis-缓存-缓存击穿

时间:2024-04-07 21:44:42浏览次数:19  
标签:知识点 缓存 过期 击穿 Redis 线程 数据 分布式

缓存击穿:缓存中一个热点数据过期或失效时,由于该数据非常受欢迎,会有大量请求直接打到数据库上,导致数据库负载增大、相应变慢甚至瘫痪。

解决方式:

  1. 互斥锁

在查询数据库之前首先获取分布式锁,更新redis之后再释放锁,可以保证数据的强一致性。

redis-lock.png

优缺点:
优点:强一致性
缺点:性能差

  1. 逻辑过期

数据本身不设置过期时间,而是添加一个过期时间字段,发现数据过期后先获取分布式锁,获取到就开一个新线程来更新数据,旧线程直接返回过期数据,新线程更新redis数据和过期时间,并释放分布式锁。

redis-logic-expire.png

优缺点:
优点:线程不等待,性能优良
缺点:存在过期数据

标签:知识点,缓存,过期,击穿,Redis,线程,数据,分布式
From: https://www.cnblogs.com/code-blog/p/18119981

相关文章

  • HTTP的强制缓存和协商缓存
    HTTP的强制缓存和协商缓存HTTP的缓存技术强制缓存ExpiresCache-Control协商缓存If-Modified-Since和Last-ModifiedIf-None-Match和ETag优先级可被缓存的请求方法总结HTTP的缓存技术  当我们进行HTTP请求时,需要将请求报文发送给对端,当服务端收到请求后会做出合适......
  • Redis持久化机制
    1.持久化机制Redis官方提供了两种不同的持久化方法来将内存的数据存储到硬盘里面分别是:-快照(Snapshot)-AOF(AppendOnlyFile)只追加日志文件1.1快照(Snapshot)1.特点这种方式可以将某一时刻的所有数据都写入硬盘中,当然这也是redis的默认开启持久化方式,保存的文......
  • Redis的前世今生(内存管理、持久化、高可用、集群 详解)一看就懂
    Redis的诞生:    redis的诞生和mysql脱不了关系,在redis还未出现时,用户的每次请求都是直接访问mysql,渐渐的人们发现,请求大部分都是读操作,而且很多都是重复的数据,磁盘的i/o是很慢的,所以人们就想,能不能学学cpu建立的缓存机制,mysql也搞一个缓存,就这样一个基于内存的数据库......
  • 为什么Redis 是单线程的以及为什么这么快?
    redis完全基于内存,绝大部分请求是纯粹的内存操作,非常快速.数据结构简单,对数据操作也简单,redis中的数据结构是专门进行设计的采用单线程模型,避免了不必要的上下文切换和竞争条件,也不存在多线程或者多线程切换而消耗CPU,不用考虑各种锁的问题,不存在加锁,释放锁的操作......
  • redis开发规约
    key设计1、可读性和可管理性#业务名:表名:idgetpersoninfo:person:12、简洁性减少key长度,建议不超过39字节例子humanresource:employee:88301->hr:emp_883013、特色字符key不要包含特殊字符(空格,换行,引号),建议使用英文与数字不同类型的应用场景 序列化JdkS......
  • Redis 一般有哪些使用场景?
    热点数据的缓存缓存是Redis最常见的应用场景,之所有这么使用,主要是因为Redis读写性能优异。而且逐渐有取代memcached,成为首选服务端缓存的组件。而且,Redis内部是支持事务的,在使用时候能有效保证数据的一致性。限时业务的运用redis中可以使用expire命令设置一个键的生存时间,......
  • redis基本操作
    基本类型string字符串#get/set-获取设置值setkey"value"#设置key的值为valuegetkey#获取key的值#getset-获取设置值getsetdbmongodb#没有旧值,返回nilgetsetdbredis#返回mongodb#setnx-nil时设置(分布式锁......
  • 使用redis-server &启动redis,没有读取到最新配置
    今天搭redis主从架构的时候,使用 redis-server& 启动redis时,一直没有读取到修改后的配置文件,得使用 redis-server/home/redis-7.2.4/redis.conf& 才可以后面查了下,redis.conf配置中开头有一段注释,说明为了读取配置文件,必须在启动Redis时将配置文件路径作为第一个参数传递......
  • java 企业工程管理系统软件源码+Spring Cloud + Spring Boot +二次开发+ MybatisPlus
    鸿鹄工程项目管理系统SpringCloud+SpringBoot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统项目背景一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管理的提升提出了更高的要......
  • HTML基础知识详解(下)(如果想知道html的全部基础知识点,那么只看这一篇就足够了!)
        前言:在上一篇文章中,我们已经学习完了超链接标签、列表标签和表格标签,但是我们还有一些标签没有学习,在这篇文章中,我们将学习剩余的标签。✨✨✨这里是秋刀鱼不做梦的BLOG✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客首先让我们看一下还剩余......