缓存算法与应用详解

本文详细介绍了缓存的定义、缓存算法,包括LRU、余数Hash路由算法和一致性Hash算法,并探讨了缓存的相关问题,如二八定律、缓存雪崩、缓存预热和缓存穿透。通过对一致性Hash算法的深入分析,展示了如何在服务器扩容时保持数据的均衡分布。
摘要由CSDN通过智能技术生成

引言

负载均衡算法与应用详解中有提到,负载均衡有利于提升集群服务器的吞吐量、数据并行处理能力、减少用户响应时间,提升业务可靠性等。但是分布式缓存集群的伸缩性不能使用简单的负载均衡手段来实现。

缓存服务器集群应用服务器集群负载均衡的不同点在于:

  • 集群中所有应用服务器部署的应用都是相同的;
  • 集群中不同缓存服务器中的缓存数据各不相同;

本文目录

  • 缓存的定义;
  • 缓存的算法;
    • LRU算法(最近最久未使用算法 + LinkdList双向链表);
    • 余数Hash路由算法( key的hashCode % 集群服务器数量);
    • 一致性Hash算法(一致性Hash环 + 虚拟节点机制);
  • 缓存的相关问题;
    • 二八定律(热点数据分布规律)
    • 缓存雪崩(缓存服务器宕机,导致数据库压力骤增);
    • 缓存预热(新启动的缓存系统,缓存命中率低);
    • 缓存穿透(高并发访问不存在的缓存数据,导致数据库压力骤增);
  • 缓存的应用案例;
    • Redis内存淘汰机制;
    • Redis持久化机制;

缓存的定义

缓存是指将数据存储在相对较高访问速度的存储介质中,一方面缓存访问速度快,可以减少数据访问的时间,另一方面如果缓存的数据是经过计算处理得到的,那么被缓存的数据无需重复计算即可直接使用,因此缓存还起到减少计算时间的作用。

缓存的本质是一个内存Hash表;

网站数据访问通常遵循二八定律,即80%的访问落在20%的数据上,因此利用Hash表和内存的高速访问特性,将这20%的数据缓存起来,可很好的改善系统性能,提升数据读取速度,降低存储访问压力。


缓存算法

LRU算法

LRU全称是Least Recently Used,即最近最久未使用的意思;

LRU算法的设计原则是:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。也就是说,当限定的空间已存满数据时,应当把最久没有被访问到的数据淘汰。

用LinkedList双向链表实现LRU,算法思路:

1. 初始化一个存放缓存数据的双向链表;

2. 判断请求是否直接击中缓存链表的表头,如果是则直接返回,一次请求完毕;如果不是,则执行后续操作;

3. 判断链表中是否已存在当前请求,如果存在,则移除对应的结点,如果不存在,则判定空间是否够用,以决定是否需要移除为尾结点;

4. 将当前请求添加至链表表头;

5. 下一次请求重复 2 - 4 步骤;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值