JAVA互联搬砖工人▲快看看这40道面试题,面试还搞不懂Redis

近年来 , 微服务变得越来越热门 , 越来越多的应用部署在分布式环境中 。 常用的分布式实现方式之一就有Redis 。
对于想要年后换东家的程序员来说 , 如果还搞不懂Redis , 面试时就容易出纰漏 。 所以我们总结了40道面试时可能会问到的Redis面试题 , 快收藏起来慢慢看吧!
什么是Redis?
Redis是完全开源免费的 , 遵守BSD协议 , 是一个高性能的key-value数据库 。
Redis与其他key-value缓存产品有以下三个特点:
Redis支持数据的持久化 , 可以将内存中的数据保存在磁盘中 , 重启的时候可以再次加载进行使用 。
Redis不仅仅支持简单的key-value类型的数据 , 同时还提供list , set , zset , hash等数据结构的存储 。
Redis支持数据的备份 , 即master-slave模式的数据备份 。
1、Redis优势
性能极高–Redis能读的速度是110000次/s,写的速度是81000次/s 。
丰富的数据类型–Redis支持二进制案例的Strings,Lists,Hashes,Sets及OrderedSets数据类型操作 。
原子–Redis的所有操作都是原子性的 , 意思就是要么成功执行要么失败完全不执行 。 单个操作是原子性的 。 多个操作也支持事务 , 即原子性 , 通过MULTI和EXEC指令包起来 。
(4)丰富的特性–Redis还支持publish/subscribe,通知,key过期等等特性 。
2、Redis与其他key-value存储有什么不同?Redis有着更为复杂的数据结构并且提供对他们的原子性操作 , 这是一个不同于其他数据库的进化路径 。 Redis的数据类型都是基于基本数据结构的同时对程序员透明 , 无需进行额外的抽象 。 Redis运行在内存中但是可以持久化到磁盘 , 所以在对不同数据集进行高速读写时需要权衡内存 , 因为数据量不能大于硬件内存 。 在内存数据库方面的另一个优点是 , 相比在磁盘上相同的复杂的数据结构 , 在内存中操作起来非常简单 , 这样Redis可以做很多内部复杂性很强的事情 。 同时 , 在磁盘格式方面他们是紧凑的以追加的方式产生的 , 因为他们并不需要进行随机访问 。
Redis的数据类型?
答:Redis支持五种数据类型:string(字符串) , hash(哈希) , list(列表) , set(集合)及zsetsortedset:有序集合) 。
我们实际项目中比较常用的是string , hash如果你是Redis中高级用户 , 还需要加上下面几种数据结构HyperLogLog、Geo、Pub/Sub 。
如果你说还玩过RedisModule , 像BloomFilter , RedisSearch , Redis-ML , 面试官得眼睛就开始发亮了 。
使用Redis有哪些好处?
1、速度快 , 因为数据存在内存中 , 类似于HashMap , HashMap的优势就是查找和操作的时间复杂度都是O1)
2、支持丰富数据类型 , 支持string , list , set , Zset , hash等
3、支持事务 , 操作都是原子性 , 所谓的原子性就是对数据的更改要么全部执行 , 要么全部不执行
4、丰富的特性:可用于缓存 , 消息 , 按key设置过期时间 , 过期后将会自动删除
Redis相比Memcached有哪些优势?
1、Memcached所有的值均是简单的字符串 , redis作为其替代者 , 支持更为丰富的数据类
2、Redis的速度比Memcached快很多
3、Redis可以持久化其数据
Memcache与Redis的区别都有哪些?
1、存储方式Memecache把数据全部存在内存之中 , 断电后会挂掉 , 数据不能超过内存大小 。 Redis有部份存在硬盘上 , 这样能保证数据的持久性 。
2、数据支持类型Memcache对数据类型支持相对简单 。 Redis有复杂的数据类型 。
3、使用底层模型不同它们之间底层实现方式以及与客户端之间通信的应用协议不一样 。 Redis直接自己构建了VM机制 , 因为一般的系统调用系统函数的话 , 会浪费一定的时间去移动和请求 。
Redis是单进程单线程的?


推荐阅读