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