Redis是完全开源免费的,遵守BSD 协议,是一个高性能的 key-value 数据库。
______ 智一面在线测评:Java实习/初级
1、Redis 的数据类型?
答:Redis 支持五种数据类型:string(字符串),hash(哈希),list(列表),
set(集合)及 zsetsorted set:有序集合)。
我们实际项目中比较常用的是string,hash 如果你是 Redis 中高级用户,还需要加上下面几种数据结构 HyperLogLog、Geo、Pub/Sub。
如果你说还玩过Redis Module,像 BloomFilter,RedisSearch,Redis-ML,面试官得眼睛就开始发亮了。
2、使用 Redis 有哪些好处?
1、速度快,因为数据存在内存中,类似于 HashMap,HashMap 的优势就是查
找和操作的时间复杂度都是O1) ;
2、支持丰富数据类型,支持 string,list,set,Zset,hash 等 ;
3、支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,
要么全部不执行;
4、丰富的特性:可用于缓存,消息,按key 设置过期时间,过期后将会自动删除。
3、Redis 是单进程单线程的?
答:Redis 是单进程单线程的,redis 利用队列技术将并发访问变为串行访问,消
除了传统数据库串行控制的开销。
4、一个字符串类型的值能存储最大容量是多少?
答:512M
5、简单解释一下Redis 的同步机制
答:Redis 可以使用主从同步,从从同步。第一次同步时,主节点做一次 bgsave,
并同时将后续修改操作记录到内存buffer,待完成后将 rdb 文件全量同步到复制
节点,复制节点接受完成后将rdb 镜像加载到内存。加载完成后,再通知主节点
将期间修改的操作记录同步到复制节点进行重放就完成了同步过程。
6、Redis 集群之间是如何复制的?
答:异步复制
7、Redis 集群最大节点个数是多少?
答:16384 个。
8、Redis 集群如何选择数据库?
答:Redis 集群目前无法做数据库选择,默认在 0 数据库。
9、怎么测试 Redis 的连通性?
答:使用ping 命令
10、Redis 事务相关的命令有哪几个?
答:MULTI、EXEC、DISCARD、WATCH
11、Redis key 的过期时间和永久有效分别怎么设置?
答:EXPIRE 和 PERSIST 命令
12、Redis 的内存用完了会发生什么?
答:如果达到设置的上限,Redis 的写命令会返回错误信息(但是读命令还可以正
常返回。)或者你可以将Redis 当缓存来使用配置淘汰机制,当 Redis 达到内存
上限时会冲刷掉旧的内容。
13、一个Redis 实例最多能存放多少的 keys?List、Set、
Sorted Set 他们最多能存放多少元素?
答:理论上Redis 可以处理多达 232 的 keys,并且在实际中进行了测试,每个实
例至少存放了
2 亿 5 千万的
keys。我们正在测试一些较大的值。任何 list、set、
和sorted set
都可以放232
个元素。换句话说,Redis 的存储极限是系统中的可
用内存值。
14、MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如 何保证 redis 中的数据都是热点数据?
答:Redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。
相关知识:Redis 提供 6 种数据淘汰策略:
volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最
少使用的数据淘汰
volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过
期的数据淘汰
volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意
选择数据淘汰
allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
no-enviction(驱逐):禁止驱逐数据
15、Redis 集群的主从复制模型是怎样的?
答:为了使在部分节点失败或者大部分节点无法通信的情况下集群仍然可用,所
以集群使用了主从复制模型,每个节点都会有 N-1 个复制品.
全部评论
(1) 回帖