再说下我为啥要学redis,因为在面试中遇到过,并且没答好,就这么简单。
不过在正式学习redis之前,要先了解NoSQL。
一、什么是NoSQL
NoSQL是一个泛称,泛指非关系型的数据库。
NoSQL并不是没有sql的意思,而是 Not Only Sql,不仅仅是sql。在web2.0时代,传统的关系型数据库(RDBMS)比如mysql,已经很难满足当下的各种需求,尤其是超大规模的高并发的社区。于是Nosql应运而生。而Redis则是其中发展最快的,自然也成为当前从业人员必须要掌握的一个技术了。
二、NoSQL特点
- 方便扩展,因为数据之间没有关系。
- 大数据量,高性能。redis官方公布的性能,每秒可以写8W次,读取11W次。
- 数据类型多样。比如基本类型有:String、List、Set、Hash、Zset,以及特殊数据类型:geo、hyperloglog、bitmap。
- 不需要事先设计数据库。
三、RDBMS 与 NoSQL 的区别
RDBMS
- 结构化组织
- SQL
- 数据和关系都存在单独的表中
- 数据定义,数据操作增删改成
- 严格的一致性
- 基础的事务
NoSQL
- 不仅仅是数据
- 没有固定的查询语言
- 多种存储方式,比如键值对存储、列存储、文档存储、图形数据(比如社交关系)
- 最终一致性
- 高性能、高可用、高扩展
对比并非是说哪种更好,还是看如何使用最适合。在公司中,更多的是上述两者相结合,才能发挥出更大的作用。
四、NoSQL的分类
- K-V键值对:比如Redis、Tair、memcached
- 文档型数据库:使用的是bson格式,类似于json,主要用来处理大量的文档。比如MongoDB,MongoDB是一个介于关系型数据库和非关系型数据库之间的产品。
在nosql里数它功能最丰富,最像RDBMS。 - 列存储数据库:以列簇式存储,将同一列数据存放在一起,查找速度快,可扩展性强,更容易进行分布式拓展,比如Hbase。
- 图形数据库:用来存储关系,专注于构建关系图谱,比如社交网络,推荐系统。