• 【Redis】SpringBoot+Redis+Ehcache实现二级缓存


    一、概述

    1.1 一些疑惑?

    • Ehcache本地内存
    • Redis 分布式缓存可以共享

    • 一级(redis) 和二级概念(Ehcache )目的是当redis挂的之后,有备台(本地JVM缓存)

    • 一级(Ehcache )和二级概念(redis) 先走本地,如果本地没有在走网络,效率会更高点。

    • Redis与数据库的区别:

      • 相同点:都是需要进行网络连接。
      • 不同点:存放介质存放在内存中、数据库数据硬盘上面。
      • 从效率来说,数据库需要做IO操作,性能比直接操作内存效率要低。
    • Ehcache需要走网络访问吗?

      • 不需要,直接从内存获取。
      • 会不会产生Ehcache内存溢出: 容器限制,会持久化在硬盘上。
      • 目的是为了减轻redis的访问压力,也可以提高访问的速度。

    1.2 场景

    • Spring Boot中集成了Spring Cache,并有多种缓存方式的实现,如:Redis、Caffeine、JCache、EhCache等等。但如果只用一种缓存,要么会有较大的网络消耗(如Redis),要么就是内存占用太大(如Caffeine这种应用内存缓存)。在很多场景下,可以结合起来实现一、二级缓存的方式,能够很大程度提高应用的处理效率。

    1.3 一级缓存、两级缓存的产生

    • 简单的理解,缓存就是将数据从读取较慢的介质上读取出来放到读取较快的介质上,如磁盘-->内存。平时我们会将数据存储到磁盘上,如:数据库。
    • 如果每次都从数据库里去读取,会因为磁盘本身的IO影响读取速度,所以就有了像redis这种的内存缓存。
    • 可以将数据读取出来放到内存里,这样当需要获取数据时,就能够直接从内存中拿到数据返回,能够很大程度的提高速度。
    • 但是一般redis是单独部署成集群,所以会有网络IO上的消耗,虽然与redis集群的链接已经有连接池这种工具,但是数据传输上也还是会有一定消耗。
    • 所以就有了应用内缓存,如:caffeine。当应用内缓存有符合条件的数据时,就可以直接使用,而不用通过网络到redis中去获取,这样就形成了两级缓存。应用内缓存叫做一级缓存,远程缓存(如redis)叫做二级缓存

    1.4 流程分析

    二、项目搭建

    SpringBoot-Redis_Ehcache

  • 相关阅读:
    STL中队列queue的常见用法
    牛客网剑指offer第17题——树的子结构
    《剑指offer》网络大神所有习题题解
    牛客网剑指offer第4题——重建二叉树
    牛客网剑指offer第56题——删除链表中重复的节点
    图像处理中的求导问题
    hash_set和hash_map
    hashtable初步——一文初探哈希表
    数据结构-链表的那些事(下)(二)
    数据结构-链表的那些事(上)(一)
  • 原文地址:https://www.cnblogs.com/haoworld/p/redisspringbootredisehcache-shi-xian-er-ji-huan-cu.html
Copyright © 2020-2023  润新知