Redis 支持哪些数据类型
使用 Redis 遇到过什么问题?
Redis 最新版本是啥,有啥新特性?
总结
前言
作为一个后端程序员,面试过程中难免会被问到缓存的一些问题,而目前来说,Redis 就是使用的最为广泛的一个缓存中间件了。下面我们就以 Redis 为例,说一说面试过程中会经常会被问到的一些面试题。并试着了解面试官所想,抓住重点,奋力一击,让面试不再烦恼。
Redis 简介
首先,简单回顾下 Redis 的简介,并提供一个思路范式。
Redis 是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,HyperLogLogs 等数据类型。内置复制、Lua 脚本、LRU 收回、事务,以及不同级别磁盘持久化功能,同时通过 Redis Sentinel 提供高可用,通过 Redis Cluster 提供自动分区。根据月度排行网站 DB-Engines 的数据,Redis 是最流行的键值对存储数据库。
上面是对 Redis 的一个基本介绍,但是在学习一门新技术的时候,一般至少需要考虑三个基本问题 WWH:
WHAT:是什么,该技术是什么,有什么特性
WHY:为什么,为什么要使用该技术,该技术解决了什么问题
HOW:怎么做,如何使用该技术
如果需要再深入一点,那么就还有一个 HOW:该项技术是如何实现的,即需要明白该技术的实现原理。
所以,猿们在使用某项技术或者学习某项新技术的时候,不妨按照上面的四个问题来思考下。或者回顾复习的时候也可以按照该思路来准备,因为一般的面试题也都是和上面几个问题相关的。下面要讲到的面试题或多或少都会和上面的四个问题挂钩。Let‘s begin.
常见 Redis 面试题
我们围绕着 Redis 由浅入深地来列举一些可能会被问到的和 Redis 缓存相关的面试题,并给出简要的解答参考,让猿们可以快速上手,并了解一些面试官的套路。同时有能力的话,不妨试着引导面试官,让其问出你擅长方面的问题。另外,以下的回答都是基于 Redis 3.x 版本来考虑的。
另外, Redis 的学习,强烈建议去看看《redis设计与实现》。
Redis 支持哪些数据类型?
解读:这个其实是一个比较基本的问题,属于上面说的 WHAT,面试官这里其实就是想考察下你对 Redis 的认知,是不是有个基本了解。当然这个问题也是可以深入回答的。示例中给出说明。
示例:主要支持字符串、哈希表、列表、集合、有序集合五种。
一般这么说的话,面试官接下来可能就会问你使用场景了,比如说你们项目中用到了上述的哪些数据结构,在什么场景下用的,解决了什么问题。 其实这也算是引入了下一个问题:为什么要使用 Redis 缓存?
后续:当然,如果你对这个很熟悉,恰巧你还知道这几种数据结构 Redis 的内在内部实现,那么你不妨在回答的时候不要停,或者引导面试官。
例如,结束基本回答后接着说:其实 Redis 在内部对这些数据结构做了不少优化,提高了查询的性能。我想一般情况下面试官会接着问你 Redis 内部是怎么实现这些数据结构的。