Redis是什么?
Redis 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是当前互联网世界最为流行的 NoSQL 数据库。NoSQL 在互联网系统中的作用很大,因为它可以在很大程度上提高互联网系统的性能。
Redis 开源免费,提供了 Java,C/C++,C#,PHP 等客户端,使用方便。主要应用于**内容缓存 ** 和 处理大量数据的高访问负载。
Redis 具备一定持久层的功能,也可以作为一种缓存工具。对于 NoSQL 数据库而言,作为持久层,它存储的数据是半结构化的,这就意味着计算机在读入内存中有更少的规则,读入速度更快。
对于那些结构化、多范式规则的数据库系统而言,它更具性能优势。作为缓存,它可以支持大数据存入内存中,只要命中率高,它就能快速响应,因为在内存中的数据读/写比数据库读/写磁盘的速度快几十到上百倍,其作用如图 1 所示。
图 1 NoSQL 的作用
NoSQL和传统数据库的区别
目前 NoSQL 有很多争议,有些人认为它可以取代数据库,有些人却不这么认为。
- 首先,NoSQL 的数据主要存储在内存中(部分可以持久化到磁盘),而数据库主要是磁盘。其次,NoSQL 数据结构比较简单,虽然能处理很多的问题,但是其功能毕竟是有限的,不如数据库的 SQL 语句强大,支持更为复杂的计算。
- 再者,NoSQL 并不完全安全稳定,由于它基于内存,一旦停电或者机器故障数据就很容易丢失数据,其持久化能力也是有限的,而基于磁盘的数据库则不会出现这样的问题。
- 最后,其数据完整性、事务能力、安全性、可靠性及可扩展性都远不及数据库。
基于以上原因,有些人并不认为 NoSQL 会取代数据库。
毫无疑问,Redis 作为一种 NoSQL 是十分成功的,但是它的成功主要是解决互联网系统的一些问题,而主要的问题是性能问题。
实际上,在互联网系统大部分的业务