其实吧,LRU也就那么回事。 (下)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 其实吧,LRU也就那么回事。 (下)

关于 Redis 中的 LRU 算法,官网上是这样说的:

https://github.com/redis/redis-doc/blob/master/topics/lru-cache.md

image.png


在 Redis 中的 LRU 算法不是严格的 LRU 算法。

Redis 会尝试执行一个近似的LRU算法,通过采样一小部分键,然后在采样键中回收最适合的那个,也就是最久没有被访问的那个(with the oldest access time)。

然而,从 Redis3.0 开始,改善了算法的性能,使得更接近于真实的 LRU 算法。做法就是维护了一个回收候选键池。

Redis 的 LRU 算法有一个非常重要的点就是你可以通过修改下面这个参数的配置,自己调整算法的精度。

maxmemory-samples 5

最重要的一句话我也已经标志出来了:

The reason why Redis does not use a true LRU implementation is because it costs more memory.

Redis 没有使用真实的 LRU 算法的原因是因为这会消耗更多的内存。

然后官网上给了一个随机 LRU 算法和严格 LRU 算法的对比图:


image.png

对于这个图官网是这样说的:


image.png


你可以从图中看到三种不同的小圆点形成的三个不同的带:

  • 浅灰色带是被回收(被 LRU 算法淘汰)的对象
  • 灰色带是没有被回收的对象
  • 绿色带是新添加的对象

由于 Redis 3.0 对 LRU 算法进行了改进,增加了淘汰池。

所以你可以看到,同样使用 5 个采样点,Redis 3.0 表现得比 Redis 2.8 要好。

同时可以看出,在 Redis 3.0 中使用 10 为采样大小,近似值已经非常接近理论性能。

写到这里我突然想起了另外一个面试题。

数据库中有 3000w 的数据,而 Redis 中只有 100w 数据,如何保证 Redis 中存放的都是热点数据?

这个题你说它的考点是什么?

考的就是淘汰策略呀,同志们,只是方式比较隐晦而已。

我们先指定淘汰策略为 allkeys-lru 或者 volatile-lru,然后再计算一下 100w 数据大概占用多少内存,根据算出来的内存,限定 Redis 占用的内存。

搞定。

才疏学浅,难免会有纰漏,如果你发现了错误的地方,可以在后台提出来,我对其加以修改。

感谢您的阅读,我坚持原创,十分欢迎并感谢您的关注。

我是 why,一个被代码耽误的文学创作者,不是大佬,但是喜欢分享,是一个又暖又有料的四川好男人。

还有,欢迎关注我呀。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
缓存 算法
LRU算法详解
LRU算法详解
310 0
|
存储 缓存 算法
LRU缓存替换策略及C#实现
LRU缓存替换策略及C#实现
146 0
|
缓存 算法 Go
一个优雅的 LRU 缓存实现
一个优雅的 LRU 缓存实现
116 0
|
存储 缓存 算法
其实吧,LRU也就那么回事。 (上)
其实吧,LRU也就那么回事。 (上)
140 0
其实吧,LRU也就那么回事。 (上)
|
存储 SQL NoSQL
其实吧,LRU也就那么回事。 (中)
其实吧,LRU也就那么回事。 (中)
153 0
其实吧,LRU也就那么回事。 (中)
|
存储 缓存 算法
最近最少使用(LRU)缓存淘汰算法
最近最少使用(LRU)缓存淘汰算法
最近最少使用(LRU)缓存淘汰算法
|
缓存 算法
460. LFU 缓存
460. LFU 缓存
|
缓存
LRU缓存
LRU缓存
107 0
LRU缓存

热门文章

最新文章