`
codeutil
  • 浏览: 12123 次
社区版块
存档分类
最新评论

大并发量请求时对无法命中的缓存进行处理的策略

阅读更多
这是一种典型的大并发访问同一个不存在的cache的情形,
因此对于可预先知道的缓存,可以采取在程序启动的时候就生成。
对于这种无法预知key的,以论坛帖子列表为例,可以采取两种策略,
1.第一个发现cache中没有缓存对象时,先放入一个空的临时对象,
比如返回List,可以先生成一个长度为0的ArrayList,同时将生成缓存的操作放到队列中或者由当前线程完成,再将生成的数据替换刚才的临时缓存对象。
这种做法的缺点是,如果生成缓存的时间较长,那么会有一部分请求得到的不是实际数据,影响部分用户体验。且如果当前生成缓存的时候出现异常,需要等刚才的临时缓存失效之后,才会再次触发生成缓存的请求。
优点是编写代码简单,即使该缓存永远无法生成,也不会出发太多的生成缓存的操作。
不怕用户恶意请求来产生过多的无法命中的缓存。
属于牺牲少量用户体验来保障系统的稳定的做法。主要用于重要性较低的业务。

2.用申请锁的方式将生成缓存的操作以同步方式进行,
优点是基本不会出现取到方法1中的那种临时缓存,
缺点是,代码编写稍复杂,生成缓存操作耗时太久或出现问题,或者网络故障等其它原因导致该缓存永远无法生成的时候,
那么每次调用过读取该缓存的请求,都将被拖住,严重的时候整个服务器线程占满被拖垮。
一旦用户恶意请求导致缓存无法名字,服务器很容易被搞挂。

根据实际业务选择吧。

分享到:
评论

相关推荐

    高并发缓存器(基于ehcache)

    4. **缓存分区和复制**:在分布式环境中,Ehcache可以进行缓存分区,提高并发性能,同时支持数据复制,保证数据的一致性。 5. **缓存预热**:启动时预先加载一部分数据到缓存中,提升应用启动速度。 **二、高并发下...

    webapi接口缓存组件

    2. 请求匹配:为了判断当前请求是否已存在缓存,我们需要对请求进行哈希运算,生成唯一的请求标识。这个标识通常包括HTTP方法、URL和所有请求参数。 3. 缓存策略:缓存组件需要设定一个合理的过期策略。常见的有...

    Openresty 缓存策略.zip

    在处理高并发请求时,缓存策略是提高性能、减少服务器负载的关键技术。本文将深入探讨 OpenResty 的缓存策略,包括缓存的原理、实现方式以及优化技巧。 首先,我们需要理解缓存的基本概念。缓存是一种存储机制,...

    jjfa.rar_缓存命中

    在IT行业中,数据库缓存是...总的来说,高缓存命中的数据库解决方案对于处理大规模数据和应对高并发访问至关重要。通过精心设计的哈希散列策略,可以有效地提高系统响应速度,减轻数据库压力,确保服务的稳定性和性能。

    数据高速缓存区命中率

    数据高速缓存区命中率是衡量数据库性能的关键指标之一,特别是在高并发的环境中,缓存的效率直接影响到系统的响应速度和资源利用率。本文档将深入探讨数据高速缓存区(Buffer Cache)的管理与优化策略,以提升其命中...

    Openresty 缓存策略.pdf

    OpenResty是一款集成了Nginx和LuaJIT的服务器软件,能够以高效的事件驱动模型处理高并发请求。在OpenResty中,开发者可以利用Lua脚本来实现复杂的业务逻辑,同时使用其内置的高性能缓存机制来提升应用程序的性能。 ...

    两次请求相同的一个URL,会产生缓存问题。

    代理服务器缓存则是服务器端的缓存,它存储了过往请求的内容,当后续请求到来时,如果命中缓存,可以快速响应。 **缓存的工作原理:** 1. **缓存验证**:当浏览器发起一个请求时,它会检查本地是否有缓存的版本,...

    处理缓存基本知识

    通过理解和熟练运用这些缓存处理知识,我们可以有效地提升系统的响应速度,降低数据库压力,为用户提供更好的服务体验。在实际工作中,需要根据具体业务场景选择合适的技术和策略来实施缓存管理。

    高并发网站多级缓存设计.docx

    在构建高并发网站时,多级缓存设计是优化系统性能的关键策略。...在设计高并发网站的多级缓存时,需要根据业务需求、数据量、系统规模以及对数据一致性的要求,综合考虑各种缓存策略和技术,以达到最佳性能和稳定性。

    高并发系统中缓存的利用和分析.pptx

    此外,还有其他层次的缓存处理,例如 LVS(Linux Virtual Server)用于负载均衡,它可以记录不同协议和缓存不同用户的请求,进一步优化系统架构。通过这些分级处理,可以构建出一个层次分明、性能强大的缓存体系。 ...

    缓存在高并发场景下的常见问题.docx

    - **缓存并发导致的穿透问题**:当多个并发请求同时访问同一缓存项且该缓存项恰好过期时,这些请求会直接穿透至后端数据库,引发大量的并发查询。为了解决这个问题,可以采用锁机制(例如Redis的setnx命令)来限制...

    springMVC+Ehcache的各级缓存(包括页面缓存)

    在IT行业中,缓存技术是提高系统性能的关键因素之一,特别是在高并发、大数据量的场景下。SpringMVC和Ehcache的结合使用,能够构建一个高效、灵活的多级缓存系统,其中包括页面缓存。下面将详细介绍SpringMVC与...

    PHP 缓存 PHP 缓存

    - 当查询一个不存在的数据时,若未命中缓存,则直接访问后端数据源,这可能导致数据源负载过大。 - 解决方法之一是将空值也进行缓存,但设置较短的过期时间。 4. **并发问题:** - 在多线程或多进程环境中,多个...

    java map 实现缓存技术

    7. **缓存击穿与缓存雪崩**:处理大量并发请求同时导致缓存失效(击穿)或整个缓存服务崩溃(雪崩)的问题,可以通过加锁、使用分布式锁、预热缓存等方式解决。 8. **监控与统计**:为了优化缓存性能,需要收集和...

    缓存穿透、缓存击穿、缓存雪崩区别和解决方案1

    缓存击穿则主要发生在高并发环境下,缓存中的热点数据突然过期,而此时大量的并发请求会同时涌向数据库,从而对数据库造成过大压力。为了解决缓存击穿问题,可以将热点数据设置为永不过期,确保这些关键数据始终存在...

    分布式多级缓存实践

    与Ehcache相比,Redis的优势在于其分布式特性,能够处理更大的数据量和更高的并发请求,但可能需要更多的网络通信。 在Spring框架中,我们可以利用Spring Cache抽象来简化缓存管理,它允许开发者通过简单的注解实现...

    分页缓存

    在IT行业中,分页缓存是一种优化大数据量查询性能的技术,尤其在Web应用程序中非常常见。它通过将数据库查询结果存储在内存缓存中,减少对数据库的直接访问,从而提高系统响应速度和用户体验。本篇文章将深入探讨...

    Java缓存技术深入了解

    - 使用缓存异常处理,当缓存未命中时,优雅地处理异常,防止影响业务。 - 注意缓存大小和并发控制,避免资源浪费和竞争条件。 7. **工具应用** - Spring Boot框架集成缓存:通过注解如`@Cacheable`、`@...

    缓存基础 (附PPT下载)

    3. **限流和降级策略**:在高并发下,对数据库访问进行限制,或者在必要时降低服务等级,保证核心功能的稳定。 **实际应用** 1. **Web开发**:使用Redis、Memcached等缓存系统,存储用户会话、热门数据,提高网站...

Global site tag (gtag.js) - Google Analytics