71.Redis 有什么优点?
? 1. 速度快
因为数据存在内存中,类似于 HashMap ,HashMap 的优势就是查找和操作的时间复杂度都是O (1) 。
Redis 本质上是一个 Key-Value 类型的内存数据库,很像 Memcached ,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据 flush 到硬盘上进行保存。
因为是纯内存操作,Redis 的性能非常出色,每秒可以处理超过 10 万次读写操作,是已知性能最快的 Key-Value 数据库。
- 如果我们查看在阿里云销售的 Redis 规格,最低的也是 8W QPS 。
? 2. 支持丰富数据类型
支持 String ,List,Set,Sorted Set,Hash 五种基础的数据结构。
Redis 的出色之处不仅仅是性能,Redis 最大的魅力是支持保存多种数据结构,此外单个 Value 的最大限制是 1GB,不像 Memcached只能保存 1MB 的数据,因此 Redis 可以用来实现很多有用的功能。比方说:
- 用他的 List 来做 FIFO 双向链表,实现一个轻量级的高性能消息队列服务。
- 用他的 Set 可以做高性能的 tag 系统等等。
同时,在基础的数据结构之上,还提供 Bitmap、HyperLogLog、GEO 等高级的数据结构。
如果面试想要加分,胖友一定要去看看这些高级的数据结构,面试与日常开发,必备神器。
? 3. 丰富的特性
- 订阅发布 Pub / Sub 功能
- Key 过期策略
- 事务
- 支持多个 DB
- 计数
- …
并且在 Redis 5.0 增加了 Stream 功能,一个新的强大的支持多播的可持久化的消息队列,提供类似 Kafka 的功能。
? 4. 持久化存储
Redis 提供 RDB 和 AOF 两种数据的持久化存储方案,解决内存数据库最担心的万一 Redis 挂掉,数据会消失掉。
? 5、高可用
内置 Redis Sentinel ,提供高可用方案,实现主从故障自动转移。
内置 Redis Cluster ,提供集群方案,实现基于槽的分片方案,从而支持更大的 Redis 规模。