首页 > 数据库 >【Java面试】准备跳槽!那这期面试题必须要会,请描述一下Redis的缓存淘汰策略

【Java面试】准备跳槽!那这期面试题必须要会,请描述一下Redis的缓存淘汰策略

时间:2022-08-26 16:34:48浏览次数:67  
标签:面试题 缓存 Java 策略 Redis 内存 key 淘汰

“请你描述一下Redis的缓存淘汰策略”

你如果你正好遇到这个问题,想好怎么回答了吗?

关于这个问题,我把高手的回答整理到了15W字的面试文档里面

大家可以私信留言领取。

下面看看高手的回答。

高手:

这个问题我需要从三个方面来回答。

第一个方面:

当Redis使用的内存达到maxmemory参数配置的阈值的时候,Redis就会根据配置的内存淘汰策略。

把访问频率不高的key从内存中移除。

maxmemory默认情况是当前服务器的最大内存。

第二个方面:

Redis默认提供了8种缓存淘汰策略,这8种缓存淘汰策略总的来说,我认为可以归类成五种

  • 第一种, 采用LRU策略,就是把不经常使用的key淘汰掉
  • 第二种,采用LFU策略,它在LRU算法上做了优化,增加了数据访问次数,从而确保淘汰的是非热点key。
  • 第三种,随机策略,也就是是随机删除一些key
  • 第四种,ttl策略,从设置了过期时间的key里面,挑选出过期时间最近的key进行优先淘汰
  • 第五种,当内存不够的时候,直接报错,这是默认的策略。

这些策略可以在redis.conf文件中手动配置和修改,我们可以根据缓存的类型和缓存使用的场景来选择合适的淘汰策略。

最后一个方面,我们在使用缓存的时候,建议是增加这些缓存的过期时间。

因为我们知道这些缓存大概的生命周期,从而更好的利用内存。

总结

Redis是一个内存数据库,而内存又是非常宝贵的资源。

如何用有限的服务器资源来支撑更多业务,就必须要考虑到缓存的淘汰算法把一些不怎么使用缓存淘汰掉。

因此,我认为这个面试题的考察方向也很好,建议大家深度学习一下。

大家记得点赞收藏加关注!!!

file

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Mic带你学架构
如果本篇文章对您有帮助,还请帮忙点个关注和赞,您的坚持是我不断创作的动力。欢迎关注「跟着Mic学架构」公众号公众号获取更多技术干货!

标签:面试题,缓存,Java,策略,Redis,内存,key,淘汰
From: https://www.cnblogs.com/mic112/p/16627954.html

相关文章

  • 在python程序中调用java代码
     Python是一门“胶水”语言,非常灵活多变,但是在一些特殊的时候,也需要调用其它语言来协助实现更多的功能;在公司使用python进行接口测试的时候,会遇到有些接口数据是由公司的......
  • Java Bean 转换(copy)
    废话不多说上代码importorg.springframework.beans.BeanUtils;importorg.springframework.beans.BeanWrapper;importorg.springframework.beans.BeanWrapperImpl;im......
  • [Javascript] Singleton Pattern
    Source:https://javascriptpatterns.vercel.app/patterns/design-patterns/singleton-patternWiththeSingletonPattern,werestricttheinstantiationofcertainc......
  • Java 基础 - 正则表达式
     一、正则表达式 正则表达式是Java中一门独立的语言,用于检测特定字符串是否符合规则。正则表达式就是用来定义匹配的规则的。1.1规则定义   1.2用法  ......
  • 容器化 | 使用 Alpine 构建 Redis 镜像
    上一期我们介绍了几种常见的构建镜像方式,并给出了功能对比、决策树等作为选型参考。本期我们将演示如何使用Alpine构建一个Redis镜像。Alpine系统使用apk包管理工......
  • java 8 流式 list 求和
    List<User>list=userService.list(wrapper);//int类型intage=list.stream().mapToInt(User::getAge).sum();//long类型longage=list.stream().mapToLong(User::......
  • Java_String&ArrayList
    Java_String&ArrayListStringString类概述String概述java.lang.String类代表字符串,String类定义的变量可以用于指向字符串对象,然后操作该字符串。Java程序中的所......
  • 力扣477(java)-汉明距离总和(中等)
    题目: 两个整数的 汉明距离指的是这两个数字的二进制数对应位不同的数量。给你一个整数数组nums,请你计算并返回nums中任意两个数之间汉明距离的总和。 示例1:......
  • Spring Boot 2.x基础教程:使用Redis的发布订阅功能
    通过前面一篇集中式缓存的使用教程,我们已经了解了Redis的核心功能:作为K、V存储的高性能缓存。接下来我们会分几篇来继续讲讲Redis的一些其他强大用法!如果你对此感兴趣,一定......
  • Java imap邮件接收与解析
    Propertiesprops=newProperties();props.setProperty("mail.transport.protocol","imap");//使用的协议,imap|pop3props.setProperty("mail.imap.host","smtp......