一、初识 Redis
1. Redis 简单介绍
- Redis诞生于2009年全称是Remote Dictionary Server 远程词典服务器,是一个基于内存的键值型NoSQL数据库。
特征:
- 键值(key-value)型,value支持多种不同数据结构,功能丰富
- 单线程,每个命令具备原子性 (Redis 6 的多线程仅仅是对于网络请求处理)
- 低延迟,速度快(基于内存、IO多路复用、良好的编码(C语言编写))。
- 支持数据持久化
- 支持主从集群、分片集群
- 支持多语言客户端
键值型,是指Redis中存储的数据都是以key、value的形式存储,而value的形式多种多样,可以是字符串、数值、甚至json等。
2. SQL 与 NoSql 对比
- NoSql可以翻译做Not Only Sql(不仅仅是SQL),或者是No Sql(非Sql的)数据库。是相对于传统关系型数据库而言,有很大差异的一种特殊的数据库,因此也称之为非关系型数据库。
2.1 结构化与非结构化
- SQL传统关系型数据库是结构化数据,每一张表都有严格的约束信息:字段名、字段数据类型、字段约束等信息,插入的数据必须遵守这些约束
- NoSQL对数据库格式没有严格约束,往往形式松散,自由。可以是键值型(Redis)、文档型(MongoDB)、列值型(HBase)、Graph图型(Neo4j)
2.2 关联和非关联
- 传统数据库的表与表之间往往存在关联,例如外键:
- 非关系型数据库不存在关联关系
- 但是可以通过json文档嵌套的方式进行描述,例如:用户和订单的关系,但是会有冗余数据(张三有这个订单,李四也可能有重复的订单)
2.3 SQL查询与非SQL查询
- 传统关系型数据库会基于Sql语句做查询,语法固定,可以使用相同语句进行查询
- 非关系数据库查询语法差异极大
2.4 事务
- 传统关系型数据库能满足事务ACID的原则,安全性高
- 非关系型数据库往往不支持事务,或者不能严格保证ACID的特性,只能实现基本的一致性(BASE理论)
3. 小结
- 存储方式
- 关系型数据库基于磁盘进行存储,会有大量的磁盘IO,对性能有一定影响
- 非关系型数据库,主要依赖于内存来操作,内存的读写速度非常快,所以性能好
- 扩展性
- 关系型数据库集群模式一般是主从,主从数据一致,起到数据备份的作用,称为垂直扩展。
- 非关系型数据库可以将数据拆分,存储在不同机器上,可以保存海量数据,解决内存大小有限的问题。称为水平扩展。
- 关系型数据库因为表之间存在关联关系,如果做水平扩展会给数据查询带来很多麻烦。