首页 > 数据库 >Redis多级缓存

Redis多级缓存

时间:2023-07-17 10:01:52浏览次数:49  
标签:缓存 Tomcat 多级 Redis 查询 Nginx

什么是多级缓存

传统缓存的问题

传统的缓存在请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,存在以下问题:

  • 请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈
  • Redis缓存失效时,会对数据库产生冲击

多级缓存就是充分利用请求处理的每个环节,分别添加缓存,减轻Tomcat压力,提升服务性能:

  • 浏览器访问静态资源时,优先读取浏览器本地缓存
  • 访问非静态资源(ajax查询数据)时,访问服务端
  • 请求到达Nginx后,优先读取Nginx本地缓存
  • 如果Nginx本地缓存未命中,则去直接查询Redis(不经过Tomcat)
  • 如果Redis查询未命中,则查询Tomcat
  • 请求进入Tomcat后,优先查询JVM进程缓存
  • 如果JVM进程缓存未命中,则查询数据库

 

在多级缓存架构中,Nginx内部需要编写本地缓存查询、Redis查询、Tomcat查询的业务逻辑,因此这样的nginx服务不再是一个反向代理服务器,而是一个编写业务的Web服务器了。

因此这样的业务Nginx服务也需要搭建集群来提高并发,再有专门的nginx服务来做反向代理,如图:

 另外,我们的Tomcat服务将来也会部署为集群模式

 

可见,多级缓存的关键有两个:

  • 一个是在nginx中编写业务,实现nginx本地缓存、Redis、Tomcat的查询

  • 另一个就是在Tomcat中实现JVM进程缓存

其中Nginx编程则会用到OpenResty框架结合Lua这样的语言。

 

标签:缓存,Tomcat,多级,Redis,查询,Nginx
From: https://www.cnblogs.com/szhNJUPT/p/17559208.html

相关文章

  • 分布式缓存
    单点redis的问题数据丢失问题:Redis是内存存储,服务重启可能会丢失数据。解决:数据持久化并发能力问题:单节点并发能力不足。解决:主从集群,读写分离。故障恢复:需要自动的故障恢复手段。解决:Redis哨兵,实现健康检测和自动恢复。存储能力问题:单节点Redis难以满足海量数据存储。解决:搭......
  • redis序列化配置
    redis序列化配置@ConfigurationpublicclassRedisTemplateConfiguration{/***@paramredisConnectionFactory*@return*/@BeanpublicRedisTemplate<Object,Object>redisTemplate(RedisConnectionFactoryredisConnectionFactory){......
  • 如何在.NET Core中使用redis
    一、1.添加Redis依赖项:在.NETCore项目中,你需要添加对StackExchange.Redis库的引用。你可以通过NuGet包管理器或手动添加依赖项来完成此操作。2. 配置Redis连接:在appsettings.json文件中,添加Redis连接配置。例如:"Redis":{"ConnectionString":"localhost:6379"}3.......
  • 记录一次.net core使用redis报错
    一、记录一次报错:报错信息如下RedisTimeoutException:Timeoutawaitingresponse(outbound=0KiB,inbound=1KiB,12063mselapsed,timeoutis1000ms),command=SCAN,next:SCAN,inst:0,qu:0,qs:1,aw:False,bw:Inactive,rs:DequeueResult,ws:Idle,in:0,in-......
  • 对安装Linux的服务器进行缓存清除
    对安装Linux的服务器进行缓存清除原创 二河小鱼 人文历史与科学技术 2023-07-1118:10 发表于江西收录于合集#服务器99个#Linux运维101个#清除缓存1个安装Linux的服务器缓存过高导致服务器运行速度慢第一步,查看当前服务器中Linux系统的状态。命令:free-h编......
  • redis keys *
    RedisKeys命令的使用及示例在Redis中,Keys命令用于获取满足指定模式的key列表。它是一个非常有用的命令,可以用来查找和操作Redis中的key。本文将介绍RedisKeys命令的使用方法,并提供一些代码示例帮助读者更好地理解和使用该命令。RedisKeys命令的语法RedisKeys命令的基本语法......
  • redis insight
    如何实现RedisInsight简介在这篇文章中,我将教你如何实现RedisInsight。RedisInsight是一个开源的Web界面,用于可视化和管理Redis数据库。它提供了一个友好的用户界面,让你可以方便地查看和操作Redis数据库。流程概述下面是实现RedisInsight的大致流程:步骤描述1......
  • redis hash命令 过期
    Redishash命令过期的实现步骤为了教会你如何实现Redis中的hash命令过期功能,我将分为以下几个步骤来进行讲解。首先,我们需要创建一个Redis的连接,并确保你已经安装了Redis和相应的Redis客户端库。接下来,我们将创建一个hash并设置其过期时间。最后,我们将检查这个hash是否已经过期。......
  • redis docker 配置文件
    RedisDocker配置文件详解Redis是一个基于内存的开源数据库,用于存储和检索数据。Docker是一种轻量级容器化平台,可以快速部署和管理应用程序。通过将Redis与Docker结合使用,我们可以轻松地创建和管理Redis实例。在使用Docker部署Redis时,我们需要创建一个配置文件,用于定义Redis的行......
  • redis desktop manager使用教程
    RedisDesktopManager使用教程RedisDesktopManager(RDM)是一个用于管理和监控Redis数据库的可视化工具。它提供了一个直观的用户界面,使用户可以轻松地执行各种操作,如查看和编辑键值、执行命令、监控性能等。本教程将向您展示如何使用RDM来管理和操作Redis数据库。RDM的安装和配......