Redis是一种键值型数据库,储存的数据都已key-value的形式,是一种非关系型数据库。
一,NoSQL(非关系型数据库)
1、与关系型数据库的区别:
1) sql是结构化的(二维表),nosql是非结构化的
2) sql数据是有关联的(关联表、外键),nosql是无关联的(可以设计成有关联的,但是需要自行维护)
3) sql满足事务的ACID特性,二nosql只满足BASE特性
4) SQL储存在磁盘,二nosql一般储存在内存
2、ACID
是指数据库管理系统(DBMS)在写入或更新资料的过程中,为保证事务是正确可靠的,所必须具备的四个特性:
1) 原子性:一个事务中的所有操作,要么全部完成,要么全部不完成
2) 一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。(各种约束)
3) 隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力
4) 持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
3、BASE
BASE理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。
4、使用
sql:数据库结构固定、对安全性要求较高
nosql:数据结构不固定、对一致性和安全性要求不高、对性能要求高
二,redis特点
1、键值型,value支持多种不同的数据结构
2、单线程(6.0后网络请求是多线程),每个命令具备原子性
3、低延迟、速度快
4、支持数据持久化(定期会将数据从内存持久化到磁盘以确保数据的安全性)
5、支持主从集群(相当于备份主节点的数据到从节点,从节点一般是只读)、分片集群(将数据拆分,将其分散存在不同的机器上)。
6、支持多语言客户端开发