71.Redis 有什么优点?

? 1. 速度快

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

Redis 本质上是一个 Key-Value 类型的内存数据库,很像 Memcached ,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据 flush 到硬盘上进行保存。

因为是纯内存操作,Redis 的性能非常出色,每秒可以处理超过 10 万次读写操作,是已知性能最快的 Key-Value 数据库。

? 2. 支持丰富数据类型

支持 String ,List,Set,Sorted Set,Hash 五种基础的数据结构。

Redis 的出色之处不仅仅是性能,Redis 最大的魅力是支持保存多种数据结构,此外单个 Value 的最大限制是 1GB,不像 Memcached只能保存 1MB 的数据,因此 Redis 可以用来实现很多有用的功能。比方说:

  • 用他的 List 来做 FIFO 双向链表,实现一个轻量级的高性能消息队列服务。
  • 用他的 Set 可以做高性能的 tag 系统等等。

同时,在基础的数据结构之上,还提供 BitmapHyperLogLogGEO 等高级的数据结构。

如果面试想要加分,胖友一定要去看看这些高级的数据结构,面试与日常开发,必备神器。

? 3. 丰富的特性

  • 订阅发布 Pub / Sub 功能
  • Key 过期策略
  • 事务
  • 支持多个 DB
  • 计数

并且在 Redis 5.0 增加了 Stream 功能,一个新的强大的支持多播的可持久化的消息队列,提供类似 Kafka 的功能。

? 4. 持久化存储

Redis 提供 RDB 和 AOF 两种数据的持久化存储方案,解决内存数据库最担心的万一 Redis 挂掉,数据会消失掉。

? 5、高可用

内置 Redis Sentinel ,提供高可用方案,实现主从故障自动转移。

内置 Redis Cluster ,提供集群方案,实现基于槽的分片方案,从而支持更大的 Redis 规模。