`

一种基于哨兵的缓存访问策略

阅读更多

一种基于哨兵的缓存访问策略

学习自 一种基于“哨兵”的分布式缓存设计

通常的缓存访问如下,箭头表示访问量,且为同一时刻访问。

cache access

如果Redis缓存命中,那么web就不会访问数据库,否则,客户端有N个并发请求就会有N个对数据库的并发请求,伴随而来的可能会是N个Redis SET操作。

为了消除这种情况下多余的请求,减轻数据库压力,引入一个“哨兵”请求,即当缓存不命中时,只有一个请求能落到数据库上,其余请求等待缓存更新。

cache access

为了在并发请求中选出一个“哨兵”,对于一个缓存需要有一个计数器与其对应。以下是借助Redis实现的算法流程:

cache access

有一个需要注意的问题就是,上图中红框部分执行失败:例如MySQL无法访问了,那么count将会不断递增,即使MySQL恢复正常了也如此,因为没有请求的count会再次为1。解决办法:

  • 手动设置count为0;
  • 给count设置上限,当达到上限时设置count为0;
  • 将“=1”的条件判断改为类似“count%10=1”;
分享到:
评论

相关推荐

    基于云计算的分布式缓存.pptx

    - 分布式缓存是一种高效的数据存储方式,它通过在网络的不同位置部署缓存节点来存储频繁访问的数据副本,以此提高数据访问速度并减轻后端数据库的压力。 - 这种技术广泛应用于需要处理大量用户请求的应用场景,如...

    redis本地缓存与redis缓存

    Redis是一种高性能的键值数据存储系统,常被用于构建分布式缓存、数据库和消息队列等应用场景。在“redis本地缓存与redis缓存”的主题中,我们将深入探讨这两种缓存方式及其各自的特点。 首先,我们要理解什么是...

    大促抗住零点洪峰-缓存架构体系课件

    缓存是一种高速存储器,其主要目的是加快数据的访问速度,减少对后端存储系统的请求。根据不同的应用场景,缓存可以分为以下几类: 1. **应用级缓存**:这类缓存通常由应用程序直接管理,用于存储频繁访问的数据,...

    SpringBoot2 整合Ehcache组件,轻量级缓存管理.docx

    Redis 是一种独立的缓存中间件,更适用于分布式环境,具备高可用性和大量数据的缓存能力,如哨兵模式和集群模式。 在 SpringBoot2 中集成 Ehcache 的步骤如下: 1. 添加依赖:引入 `spring-boot-starter-cache` 和 ...

    R2M缓存介绍-业务使用方面.pptx

    ### R2M缓存系统概览 #### 一、R2M缓存系统简介 ...综上所述,R2M缓存系统为大规模业务应用提供了一套完整的解决方案,通过高效的集群管理和合理的缓存使用策略,能够显著提升系统的整体性能和用户体验。

    redis缓存数据库jar包

    将jar包放入Tomcat的`lib`目录,就是一种常见的添加方式,这样可以让所有部署在该Tomcat上的应用都能访问到这些库。 关于标签"redis",这里主要涉及Redis的基本操作和配置。例如,我们可以通过Java代码连接到Redis...

    亿级流量电商详情页系统的大型高并发与高可用缓存架构实战2

    - 这是一种避免缓存雪崩的有效方法。通过对每个缓存条目设置不同的随机过期时间,可以分散缓存失效和重建的压力,防止大量缓存同时过期导致的服务器压力剧增。 7. **高可用分布式系统架构** - 高可用架构的关键...

    基于分布式高可用集群的网购系统优化.docx

    Nginx lua 是基于 Nginx 协程机制的一种缓存方式,针对用户想要获取的内容,使用 lua 脚本的方式在 Nginx 上完成对应业务代码的处理逻辑,可以避免访问 Java 服务器。 Redis 是一个开源的高性能键值对数据库,提供...

    07 redis高可用-哨兵模式1

    【Redis高可用-哨兵模式】是Redis为了实现服务的高可用性而设计的一种监控和故障转移机制。哨兵(Sentinel)系统监控Redis主从集群的状态,当检测到主节点故障时,会自动进行故障迁移,将一个从节点提升为新的主节点,...

    高级Java人才培训专家-分布式缓存

    Redis是一种开源的键值数据库,它支持多种数据结构,如字符串、哈希、列表等,并且它将数据存储在内存中以提供高速访问。由于其高性能的特点,Redis常被用于构建分布式缓存系统。 #### 1.2 分布式缓存的重要性 随着...

    redis缓存,消息中间件,队列以及非对称式加密

    非对称式加密是一种安全的加密技术,与对称加密相比,它在安全性上有所提升。非对称加密使用一对密钥:公钥和私钥。公钥可以公开给任何人,用于加密数据;而私钥则必须保密,用于解密数据。这种机制使得只有拥有私钥...

    带你实战基于Redis的高并发预约抢购系统

    Redis是一种高性能的键值数据库,常用于数据缓存和高并发场景。在“带你实战基于Redis的高并发预约抢购系统”中,我们将探讨如何利用Redis优化抢购系统的性能和稳定性,防止数据不一致和缓存雪崩等问题。 首先,...

    Redis:高效的数据存储与缓存解决方案

    - LFU(Least Frequently Used)最不经常使用:另一种淘汰策略,优先移除访问频率最低的键。 - TTL(Time to Live)生存时间:为键设置过期时间,超过这个时间,键会自动失效。 3. **高可用性** - Master-Slave...

    分布式缓存 Redis + Memcached 经典面试题!.zip

    分布式缓存是现代大型互联网应用不可或缺的技术之一,主要用于提高数据访问速度,降低数据库负载。Redis 和 Memcached 是其中最常用的两种分布式缓存系统。这里我们将深入探讨 Redis 和 Memcached 的核心概念、优...

    Redis非关系型数据库笔记-数据持久化-主从同步-缓存-笔记-五大数据类型-三大特殊数据类型

    - **定义**: Redis是一种开源的、基于内存的日志型Key-Value数据库。它使用ANSI C编写,支持网络连接,提供丰富的API接口供多种编程语言调用。 - **特点**: - **丰富的数据类型**: 支持字符串(Strings)、哈希...

    链表的存储与检索优化策略.pptx

    - **哨兵节点的概念**:哨兵节点是一种虚拟节点,位于链表的头部或尾部,用于简化边界条件的处理。头部哨兵节点的`next`指向链表的第一个实际节点,`prev`为`null`;尾部哨兵节点的`prev`指向链表的最后一个实际节点...

    深入解读JIMDB—京东分布式缓存与高速KV存储(袁航演讲稿)

    **JimDB**,即**京东内存数据库**(Jingdong In-Memory Database),是京东自主研发的一款分布式缓存与高速键值(Key-Value, KV)存储系统。自其问世以来,JimDB已成为支撑京东各项业务的核心基础设施之一,广泛应用...

    软件开发中的高可用技术-以Redis为例

    在软件开发中,高可用...通过这些机制,Redis能够在面临各种挑战时保持服务的连续性和稳定性,从而在软件开发中成为一种可靠的高可用解决方案。开发者可以根据实际需求选择适合的策略和配置,构建出健壮的分布式系统。

    Java面试题redis部分.docx

    双删延迟策略是一种解决方案,先删除 Redis 数据,等待一段时间确保数据库更新完成后再删除 Redis 中的数据,以防止请求交错导致的数据不一致。 5. 并发竞争 key 的问题可通过分布式锁(如 Redis 的 SETNX 或 ...

    TestRedis.zip

    最后,Redis的发布订阅(Pub/Sub)模式是一种轻量级的消息通信机制,可以用于实现解耦的事件驱动架构。JavaEE应用可以通过发布消息到指定频道,订阅者可以实时接收到这些消息,从而实现异步通信。 综上所述,Redis在...

Global site tag (gtag.js) - Google Analytics