手撸LRU算法和LRU在Redis中的配置详解

本文介绍了LRU(最近最少使用)算法的概念、实现原理,并提供了手写LRU简单实现的示例。讨论了在Redis中配置LRU策略的方法,包括maxmemory参数设置和淘汰策略的选择,以应对内存限制的场景。
摘要由CSDN通过智能技术生成

1、概念

LRU是Least Recently Used的缩写,即最近最少使用。百度百科中说:LRU是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。铁子们说:LRU是一种缓存淘汰算法,其核心思想是,如果数据最近被访问过,那么将来被访问的几率也更高。

2、实现原理分析

灵机一动,我瞬间想到了一种实现方法,为每一个缓存对象设置一个计数器,每次缓存命中则给计数器加1,随着新缓存的数量一直增加,一旦内存耗尽就需要淘汰旧缓存,但是淘汰缓存要遍历所有的计数器,并将计数器值最小的缓存对象丢弃。

显然,上述实现LRU的思路弊端很明显,如果缓存的数量少,问题不大, 但是缓存数量达到十万或者百万量级,如果需要淘汰缓存对象,则需要遍历所有计算器,想一想就非常可怕,其性能与资源消耗是巨大的,效率也就非常的慢了。

如果用数组做缓存对象存储,在数组中移动对象的话,需要进行整体copy,性能也是不佳。就在此时,电闪雷鸣,风雨交加,外面突然下起了雨,我站在窗前,发现雨点打在地上呈现出了链表两个字,顿时豁然开朗,土地平旷,屋舍俨然。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值