Redis 简介
1. 为什么需要使用 Redis?
在 关系型数据库的性能瓶颈 中,我们提到了关系型数据库 「ACID」 的特性会导致性能瓶颈。除此之外,关系型数据库的数据都保存在磁盘上,读写速度较慢,也会带来较大的延迟。
那么如果将常用的数据都保存在内存中,是否可以提升访问速度?
基于这个理念,基于内存的键值对数据库 「Redis」 诞生了。
简单来说,Redis 主要解决的就是关系型数据库访问速度 慢的问题。因此最常见的使用场景就是──缓存。
2. Redis 为什么快?
简单来说有三点,内存数据库,单线程模型,数据结构优化。
- 内存数据库:Redis 是一个内存数据库,数据从内存中存取,操作延迟要远低于从磁盘读写的关系型数据库
- 单线程模型:Redis 所有的操作都是在主线程中执行的,避免了多个线程间的一致性与阻塞问题,带来了极高的运行效率
- 数据结构优化:几乎所有 Redis 支持的数据结构,都做了特殊的优化,不论是更新还是查询操作,都具备更好的时间复杂度
关于 Redis 支持的数据结构可以参考 Redis 数据结构
3. Redis 与 Memcached 的区别
「Memcached」 是另一个常见的用作缓存的组件。虽然 Redis 与 Memcached 都是基于内存的键值对数据库,但是它们之间还是有很多区别的。
Memcached 支持的结构只有字符串,而 Redis 支持的结构有字符串、列表、有序集合、哈希表、集合等。
另外虽然两者都是内存数据库,但是 Redis 提供了 持久化 功能,而 Memcached 没有,这也意味着 Memcached 在重启后数据会丢失。
最后 Redis 还支持水平扩展,可以用来保存更大规模的缓存数据,而 Memcached 仅支持单机部署。
在使用上,Memcached 更适合快速引入一个缓存的功能,保存小规模的数据,而 Redis 可以保存更大规模的数据,以及对数据的持久化有要求的场景。