Redis 常见面试题自测
注意!!! :下面这些问题的参考答案你几乎都可以在 JavaGuide 在线阅读网站 和 《JavaGuide 面试指北》中找到。并且,这两个参考资料没有给出解答的问题,我也都给了对应的参考文章。
建议你先阅读学 习了对应的内容之后再进行自测。
Redis 基础
Redis 有什么作用?为什么要用 Redis/为什么要用缓存?
👉 重要程度:⭐⭐⭐
💡 提示:内存数据库,高并发,常用来做缓存。
Redis 除了做缓存,还能做什么?
👉 重要程度:⭐⭐⭐⭐
💡 提示:分布式锁、限流、消息队列(不推荐)。另外,利用 Redis 自带的数据结构我们可以很方便地完成很多复杂的业务场景比如通过 sorted set 维护一份排行榜。
Redis 可以做消息队列么?
👉 重要程度:⭐⭐⭐
💡 提示:Redis 5.0 新增加的一个数据结构 Stream
可以用来做消息队列。不过,和专业的消息对象相比还是有很多欠缺的地方。
分布式缓存常见的技术选型方案有哪些?
👉 重要程度:⭐⭐⭐
💡 提示:Memcached 和 Redis。紧接着面试官可能会让你简单对比一下 Memcached 和 Redis 。
Redis 数据结构
Redis 常用的数据结构有哪些?
👉 重要程度:⭐⭐⭐⭐
💡 提示:
- 5 种基础数据类型:String(字符串)、List(列表)、Set(集合)、Hash(散列)、Zset(有序集合)。
- 3 种特殊数据类型:HyperLogLogs(基数统计)、Bitmap (位存储)、geospatial (地理位置)。
面试官问到 Redis 常用的数据结构之后,可以会顺带问你 Redis 底层数据结构。
使用 Redis 统计网站 UV 怎么做?
👉 重要程度:⭐⭐⭐⭐⭐
💡 提示:可以借助 HyperLogLog 来做,占用空间非常非常小。
使用 Redis 实现一个排行榜怎么做?
👉 重要程度:⭐⭐⭐⭐⭐
💡 提示:Redis 中有一个叫做 sorted set
的数据结构经常被用在各种排行榜的场景下。
Redis 线程模型
Redis 单线程模型了解吗?
👉 重要程度:⭐⭐⭐⭐⭐
💡 提示:Redis 通过 IO 多路复用程序 来监听来自客户端的大量连接(或者说是监听多个 socket),它会将感兴趣的事件及类型(读、写)注册到内核中并监听每个事件是否发生。
类似问题:既然是单线程,那怎么监听大量的客户端连接呢?、为什么 Redis 这么快?
Redis6.0 之前为什么不使用多线程?
👉 重要程度:⭐⭐⭐
💡 提示:单线程编程容易并且更容易维护、Redis 的性能瓶颈不在 CPU 。