Java面试题之Redis篇

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 关于Redis还有深入的问题是它为什么这么快?它的底层使用了什么使得它存取数据这么快?还有就是针对情况不同选择其持久性类型,这些都是值得深入思考的问题。

微信截图_20220531213200.png


一.题目介绍


1.题目来源


实际面试中遇到,形式的话有书面解答也有口述。一般侧重点为Redis的应用,Redis的持久化有哪些,Redis的淘汰策略


2.题目


1)Redis在你的系统里扮演一个什么样的角色?


2)Redis的持久化有哪些?


3)Redis的淘汰策略


二.具体解答


1.Redis在你的系统里扮演一个什么样的角色?


1)缓存:Redis一般做缓存多一点,比如缓存临时的Token,或者不需要入库的临时数据


2)简单的发布订阅:Redis是支持发布与订阅功能的,所以在不想使用MQ的时候,Redis也能做发布与订阅的功能


3)简单的秒杀功能:秒杀一般需要预存数据和预扣库存,所以在秒杀开始之前库存数据应该存到Redis里,有购买时从Redis里读取库存,然后再更新到数据里


4)排名:Redis的zset数据类型合适做排名,这个在前面的文章里有提到过,感兴趣的可以去看看


2.Redis的持久化有哪些?


RDB:

RDB持久化是指在指定的时间间隔内将内存中的数据和操作通过快照的方式保存到redis bin目录下的一个默认名为 dump.rdb的文件,可以通过配置设置自动的快照持久化的方式,我们可以配置redis在n秒内进行快照的时间,如果超过这个时间节点,将会自动执行快照操作。虽然这种方式方便快捷,但是无法保证数据的绝对安全可靠,如果服务器在非备份时间跨度内发生了故障,无法做到对当前状态的实时保存,导致数据丢失。而且每次保存 RDB文件时, Redis都需要fork()出一个子进程,由子进程来执行具体的持久化工作,对资源消耗较大。


AOF: redis 的 AOF 持久化是在每次接受到的命令通过 write函数追加到文件中(默认是 appendonly.aof),但是由于操作系统在写入文件时使用了缓存来提高写入效率,还是可能会出现因服务器突然故障而导致的数据丢失,故我们可以通过配置文件告诉redis我们同步数据的时间间隔(默认间隔是每秒同步一次)


3.Redis的淘汰策略


一般说的是指Redis内存淘汰机制,大致有以下几类:


1)LRU:LRU是Least recently used,最近最少使用的意思,简单的理解就是从数据库中删除最近最少访问的数据,该算法认为,你长期不用的数据,那么被再次访问的概率也就很小了,淘汰的数据为最长时间没有被使用,仅与时间相关。


2)LFU:LFU是Least Frequently Used,最不经常使用的意思,简单的理解就是淘汰一段时间内,使用次数最少的数据,这个与频次和时间相关。


3)TTL:Redis中,有的数据是设置了过期时间的,而设置了过期时间的这部分数据,就是该算法要解决的对象。如果你快过期了,不好意思,我内存现在不够了,反正你也要退休了,提前送你一程,把你干掉吧。


4)随机淘汰:随机性的淘汰,无规律


三.题后思考


关于Redis还有深入的问题是它为什么这么快?它的底层使用了什么使得它存取数据这么快?还有就是针对情况不同选择其持久性类型,这些都是值得深入思考的问题。

目录
相关文章
|
1月前
|
存储 缓存 NoSQL
Redis常见面试题全解析
Redis面试高频考点全解析:从过期删除、内存淘汰策略,到缓存雪崩、击穿、穿透及BigKey问题,深入原理与实战解决方案,助你轻松应对技术挑战,提升系统性能与稳定性。(238字)
|
2月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
5月前
|
缓存 Java 关系型数据库
2025 年最新华为 Java 面试题及答案,全方位打造面试宝典
Java面试高频考点与实践指南(150字摘要) 本文系统梳理了Java面试核心考点,包括Java基础(数据类型、面向对象特性、常用类使用)、并发编程(线程机制、锁原理、并发容器)、JVM(内存模型、GC算法、类加载机制)、Spring框架(IoC/AOP、Bean生命周期、事务管理)、数据库(MySQL引擎、事务隔离、索引优化)及分布式(CAP理论、ID生成、Redis缓存)。同时提供华为级实战代码,涵盖Spring Cloud Alibaba微服务、Sentinel限流、Seata分布式事务,以及完整的D
314 0
|
4月前
|
缓存 Java API
Java 面试实操指南与最新技术结合的实战攻略
本指南涵盖Java 17+新特性、Spring Boot 3微服务、响应式编程、容器化部署与数据缓存实操,结合代码案例解析高频面试技术点,助你掌握最新Java技术栈,提升实战能力,轻松应对Java中高级岗位面试。
436 0
|
2月前
|
存储 SQL NoSQL
Redis-常用语法以及java互联实践案例
本文详细介绍了Redis的数据结构、常用命令及其Java客户端的使用,涵盖String、Hash、List、Set、SortedSet等数据类型及操作,同时提供了Jedis和Spring Boot Data Redis的实战示例,帮助开发者快速掌握Redis在实际项目中的应用。
266 1
Redis-常用语法以及java互联实践案例
|
4月前
|
Java 数据库连接 数据库
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
本文全面总结了Java核心知识点,涵盖基础语法、面向对象、集合框架、并发编程、网络编程及主流框架如Spring生态、MyBatis等,结合JVM原理与性能优化技巧,并通过一个学生信息管理系统的实战案例,帮助你快速掌握Java开发技能,适合Java学习与面试准备。
213 2
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
|
2月前
|
算法 Java
50道java基础面试题
50道java基础面试题
|
4月前
|
存储 NoSQL 定位技术
Redis数据类型面试给分情况
Redis常见数据类型包括:string、hash、list、set、zset(有序集合)。此外还包含高级结构如bitmap、hyperloglog、geo。不同场景可选用合适类型,如库存用string,对象存hash,列表用list,去重场景用set,排行用zset,签到用bitmap,统计访问量用hyperloglog,地理位置用geo。
122 5
|
5月前
|
算法 架构师 Java
Java 开发岗及 java 架构师百度校招历年经典面试题汇总
以下是百度校招Java岗位面试题精选摘要(150字): Java开发岗重点关注集合类、并发和系统设计。HashMap线程安全可通过Collections.synchronizedMap()或ConcurrentHashMap实现,后者采用分段锁提升并发性能。负载均衡算法包括轮询、加权轮询和最少连接数,一致性哈希可均匀分布请求。Redis持久化有RDB(快照恢复快)和AOF(日志更安全)两种方式。架构师岗涉及JMM内存模型、happens-before原则和无锁数据结构(基于CAS)。
162 5