网络知识 娱乐 宜人贷:LRU提高缓存命中率,是缓存系统的重要指标

宜人贷:LRU提高缓存命中率,是缓存系统的重要指标

LRU即Least Recently Used的缩写,是一种页面置换算法。处于内存中但又不用的数据块,被人们叫做LRU。

在宜人贷看来,LRU与“最近使用的数据会在未来一段时期内仍然被使用,已经很久没有使用的数据大概率在未来很长一段时间仍然不会被使用”的思想高度契合,操作系统会根据提示将某些数据移出内存而腾出空间来加载另外的数据。如此,LRU可以解决很多实际开发中的问题,很多用户经常通过LRU的思想来做缓存,一般也将其称为LRU缓存机制。

通常来说,如果使用数组来实现一个基于LRU的缓存,按照LRU原理要求可以预知存在大量的拷贝操作,性能上可能无法满足。

宜人贷指出,可以设计一个LRU缓存,满足放入和移出的需求,把访问次序维护好,但是这个次序的维护并不需要在内存中真正排序来反应,这种操作可以为用户节约时间,提高效率。

LRU 算法的优势在于算法实现难度不大,对于热点数据问题,LRU 效率会更好。当然,LRU 算法也存在一定劣势。举例来说,LRU 算法对于偶发的批量操作,如批量查询历史数据,就有可能使缓存中热门数据被这些历史数据替换,造成缓存污染,导致缓存命中率下降。

基于当缓存容量溢满时,优先淘汰最近很少使用数据的准则,LRU拥有广泛的使用场景,其在Redis、Guava等工具中大展身手应用,甚至是核心的思想之一。

宜人贷认为,为了尽量减少与理想算法的差距,产生了各种精妙的算法。但LRU算法是一种最少使用页面置换的算法,实力出众,可大大提高读取效率。缓存命中率是缓存系统的重要指标,如果缓存系统的缓存命中率过低,将会导致查询回流到数据库,从而引发数据库的压力升高,因此LRU算法很有必要。