• 高并发系列之——缓存中间件Redis


    1 概念和使用场景

      下载路径

    2 基本存储类型

    • String  
    • List  
    • Set  
    • SortedSet  
    • Hash

    3 事务

      单线程执行,即只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。

      根据事务的四大特性ACID,只保证了原子性、一致性和隔离性

    4 如何实现mybatis的二级缓存

      步骤一:新建一个类,用于实现org.apache.ibatis.cache.Cache接口

      步骤二:在mapper.xml中开启基于redis二级缓存

        <cache type=“com.wooyoo.learning.util.RedisCache”/>

      步骤三:sql语句中增加标签如,flushCache=true

    4.1 二级缓存目的

      取数据时,首先从一级缓存中取,其次葱二级缓存中,如果二级缓存中有数据,则从二级缓存中取,否则查询数据库。

      删除、更新、增加数据的时候,同时更新缓存。

    4.2 什么数据适合存放到二级缓存中

    • 很少被改动;
    • 数据不是很重要,容许出现偶尔的并发数据;
    • 不会被并发访问;

    5 扩展

    5.1 缓存穿透

      查询缓存中不存在的数据,导致直接查询到数据库。

      解决方案:第一次查询不存在的数据时,在缓存中增加一个对应的key为空的数据。

    5.2 缓存雪崩

      所有缓存在同一时间全部失效,导致了所有请求都直接访问数据库。

      解决方案:设置线程互斥,只让一个线程构建缓存,其他等待缓存创建完成后再通过缓存取数据。或,设置交错失效时间

    5.3 缓存击穿

      缓存雪崩的一个特例,不同的是缓存雪崩针对全部数据,缓存击穿是特定的热点数据。

      缓存方案:二级缓存

  • 相关阅读:
    CentOS 8搭建Kubernetes-k8s集群-1.18.5
    Docker、CICD持续集成部署、Gitlab使用、Jenkins介绍
    落地微服务架构v2.0
    分布式大规模服务调用架构
    .NetCore3.1+微服务架构技术栈
    ASP.NET MVC4 学习笔记-4
    ASP.NET MVC4 学习笔记-3
    SQL Server中获取不同格式的日期
    ASP.NET MVC4 学习笔记-2
    windows ce 5.0 + vs2005 + sql数据库_开发注意事项
  • 原文地址:https://www.cnblogs.com/guobm/p/9990218.html
Copyright © 2020-2023  润新知