当前位置:   article > 正文

Redis 高频面试题_redis高频面试题

redis高频面试题

Redis,全称:Remote Dictionary Server,是一个基于内存的高性能 key-value 数据库,是应用服务提高效率和性能必不可少的一部分,因为当前大部分的应用都离不开 Redis,所以学习并熟练 Redis 操作已经成为一个必不可少的技能。当然,面试中,Redis 也深受面试官喜爱,下面就为大家整理汇总 Redis 的高频面试题,希望能给乡亲们一点帮助。

1、什么是 Redis? 简述它的优缺点?

Redis 的全称是:Remote Dictionary.Server,本质上是一个 Key-Value 类型的内存数据库,很像 memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据 flush 到硬盘 上进行保存。
因为是纯内存操作,Redis 的性能非常出色,每秒可以处理超过 10 万次读写操作,是已知性能最快的 Key-Value DB。
Redis 的出色之处不仅仅是性能,Redis 最大的魅力是支持保存多种数据结构,此外单个 value 的最大限 制是 1GB,不像 memcached 只能保存 1MB 的数据,因此 Redis 可以用来实现很多有用的功能。比方说用他的 List 来做 FIFO 双向链表,实现一个轻量级的高性 能消息队列服务,用他的 Set 可以做高 性能的 tag 系统等等。
另外 Redis 也可以对存入的 Key-Value 设置 expire 时间,因此也可以被当作一 个功能加强版的 memcached 来用。
Redis 的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能 读写,因此 Redis 适合的场景主要局限在较小数据量的高性能操作和运算上。
2、使用 redis 有哪些好处?

速度快,因为数据存在内存中,类似于 HashMap,HashMap 的优势就是查找和操作的时间复杂度都是 O (1)。

支持丰富数据类型,支持 string,list,set,sorted set,hash

支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行。

丰富的特性:可用于缓存,消息,按 key 设置过期时间,过期后将会自动删除。

3、Redis 支持哪几种数据类型?

答:Redis 支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及 zset (sorted set:有序集合)。
还有一些数据结构如 HyperLogLog、Geo、Pub/Sub 等,我们也最好知道,另外像 Redis Module,像 BloomFilter,RedisSearch,Redis-ML 等,能有个印象,哪怕知其然不知其所以然也比听都没听过好点。

4、Redis 有哪几种淘汰策略?

Redis 的内存淘汰策略是指在 Redis 的用于缓存的内存不足时,怎么处理需要新写入且需要申请额外空间的数据。
no-eviction:当内存不足以容纳新写入数据时,新写入操作会报错。

allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的 key。

allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个 key。

volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的 key。

volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个 key。

volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的 key 优先移除。

注意这里的 6 种机制,volatile 和 allkeys 规定了是对已设置过期时间的数据集淘汰数据还是从全部数据集淘汰数据,后面的 lru、ttl 以及 random 是三种不同的淘汰策略,再加上一种 no-enviction 永不回收的策略。  
使用策略规则:

如果数据呈现幂律分布,也就是一部分数据访问频率高,一部分数据访问频率低,则使用 allkeys-lru

如果数据呈现平等分布,也就是所有的数据访问频率都相同,则使用 allkeys-random

5、为什么 Redis 需要把所有数据放到内存中?

答:Redis 为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘。所以 redis 具有快速和数据持久化的特征,如果不将数据放在内存中,磁盘 I/O 速度为严重影响 redis 的 性能。
在内存越来越便宜的今天,redis 将会越来越受欢迎, 如果设置了最大使用的内存,则数据已有记录数达 到内存限值后不能继续插入新值。
6、Redis 有哪些适合的场景?

(1) 会话缓存 (Session Cache)
最常用的一种使用 Redis 的情景是会话缓存 (sessioncache),用 Redis 缓存会话比其他存储 (如 Memcached) 的优势在于:Redis 提供持久化。当维护一个不是严格要求一致性的缓存时,如果用户的 购物车信息全部丢失,大部分人都会不高兴的,现在,他们还会这样吗?
幸运的是,随着 Redis 这些年的改进,很容易找到怎么恰当的使用 Redis 来缓存会话的文档。甚至广为 人知的商业平台 Magento 也提供 Redis 的插件。
(2) 全页缓存 (FPC)

除基本的会话 token 之外,Redis 还提供很简便的 FPC 平台。回到一

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号