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

redis缓存应用

文章目录

    • 1.什么是缓存(Cache)
        • 重复数据请求
    • 2.缓存更新策略(三种)
      • 主动更新策略
    • 3.什么是缓存穿透
      • 概念
      • 解决
    • 4.什么是缓存雪崩
      • 概念:
      • 解决
    • 5.什么是缓存击穿问题
      • 概念
      • 解决
        • 1.互斥锁
        • 2.逻辑过期
        • 方案对比

1.什么是缓存(Cache)

缓存是一种用于临时存储数据的技术,数据交换的缓冲区,一般读写性能较高

作用:提高读写效率,降低响应时间

成本:数据一致性成本、代码维护成本、运维成本

重复数据请求
  • 当相同的数据被多次请求时,可以将结果缓存起来,避免重复计算或查询数据库。
  • 例如:Web 应用中,频繁访问的数据库查询结果可以缓存到内存中。

2.缓存更新策略(三种)

主动更新策略


线程安全问题(数据不一致)

选用方案二:先操作数据库在删除缓存,线程2是数据库操作,一般比redis慢,所以线程1速度快,能让线程2挤进去的概率极小

3.什么是缓存穿透

概念

用户请求的数据在缓存和数据库中都不存在,不断发起这样的请求会给数据库带来压力

解决

缓存null对象,

缺点:1.会带来额外的内存消耗,请求没有的数据都会在缓存添加null值,占用内存,在加一个超时剔除,解决占用大量内存的问题

2.短期的数据不一致,比如查询一条数据,缓存没有,数据库没有,写入缓存就是null,此时,插入了一条数据,但是缓存里面有就会查缓存的旧数据,解决添加缓存的存在时间TTL

布隆过滤

4.什么是缓存雪崩

概念:

就是统一时间段大量的缓存key同时失效或者redis服务宕机了,导致大量请求到达数据库,带来巨大压力

解决

给key的TTL添加随机值,不然缓存在同一个时间段内同时失效

5.什么是缓存击穿问题

概念

也叫热点key问题,就是一个高并发访问并且缓存重建业务较为复杂的key突然失效了,无数的请求访问会给数据库带来巨大的压力

解决

1.互斥锁

(没抢到锁的线程会一直等待,性能差)

2.逻辑过期

方案对比


http://www.kler.cn/a/539473.html

相关文章:

  • 【0401】Postgres内核 CREATE DATABASE database-name 源码实现 ①
  • 如何在WPS和Word/Excel中直接使用DeepSeek功能
  • 使用 Three.js 实现热力渐变效果
  • Maven入门核心知识点总结
  • 基于SpringBoot的线上历史馆藏管理系统
  • Android双屏异显Presentation接口使用说明
  • 苹果笔记本安装jmeter
  • React Native 列表组件:FlashList、FlatList 及更多
  • AI刷题-融合目标计算问题
  • 蓝桥杯数组分割
  • Redis持久化的两种方式:RDB和AOF
  • RNA研究的新发现,人类未来可能控制基因遗传
  • 什么是 Elasticsearch?
  • 【什么是拆包和粘包?】
  • 消息中间件之kafka
  • Mac上搭建k8s环境——Minikube
  • Axure原型设计:AI开发平台解决方案及设计案例
  • java手动实现常见数据结构
  • 零基础入门AI:如何使用ollama本地部署DeepSeek 开源大模型
  • B+树原理详解及C语言实现
  • 如何使用deepseek开发一个翻译API
  • 韶音科技:消费电子行业售后服务实现数字化转型,重塑客户服务体系
  • 如何使用python制作一个天气预报系统
  • 工业物联网平台-视频识别视频报警新功能正式上线
  • 【kafka实战】06 kafkaTemplate java代码使用示例
  • 语义分割文献阅读——SETR:使用Transformer从序列到序列的角度重新思考语义分割