一、Nosql数据库:
Redis是键值数据库,通过键值对存储数据,属于Nosql数据库。Mysql是关系型数据库。
1.关系型数据库:
1.1 结构化: 以固定格式和约束存储(表,约束)
缺点是当表太大时,修改字段约束会出现问题。

1.2 关联性: 表与表之间具有关联关系,虽然能节省空间,但是删除某个具有关系的表会报错,不灵活。

1.3 SQL查询: 查询需要特定语法格式,对于不同的数据库来说语法都是统一的。 但是语法较为复杂。
1.4 ACID:所有数据库底层都满足事务的原子性,一致性,隔离性,持久性(ACID)。
2.Nosql数据库:
2.1 非结构化: 字段类型没有严格的限定,value可以适配不同数据结构。

2.2 非关联性: 直接存储关联关系为一个固定的数据项,但是会有存储冗余。

2.3 非SQL: 不同Nosql数据库的语法都不一样,但是语法都比较简单。

2.4 BASE:无法很好的满足事务,需要手动编写事务逻辑(不过SSM的Service层也有事务,好像可以解决这个问题)
2.5 存储方式:
Sql存储在磁盘,而Nosql存储在内存。
2.6 扩展能力:
Nosql在插入一条数据时会自动根据数据的唯一id进行hash运算,从而判断当前数据应该插入到哪一个节点上,从而实现数据的整合和拆分。而sql就不行。
2.7 适用条件:
-
sql:
数据结构相对固定,对安全性和一致性要求较高(订单)时使用,为了提升查询效率可以将部分订单数据放到nosql来提高性能。 -
nosql:
数据结构不固定,对性能要求高,但是对事务和安全性要求不高时使用。
二、Redis:
1.优点:
- 键值型,value支持多种不同的数据结构
- 内存存储,相较于磁盘存储指令执行速度大幅提升
- 单线程,每个命令具备原子性
- 支持数据持久化,定期将数据从内存存储到磁盘
- 支持主从集群、分片集群
- 支持多语言客户端
2.key的层级格式:
redis中没有表的概念,使用key作为标识符。
当使用 “:” 来定义键时会自动形成层级关系:
set user:1 ‘{“id”:1, “name”:“jack”}’
set user:2 ‘{“id”:2, “name”:“tom”}’
set product:1 ‘{“id”:1, “name”:“华为”}’
set product:2 ‘{“id”:2, “name”:“苹果”}’
这种层级定义法通过前缀避免了相同id的情况出现。
相反,不使用层级定义法就会覆盖原来的内容:
set 1 ‘{“id”:1, “name”:“jack”}’
set 1 ‘{“id”:1, “name”:“华为”}’
860

被折叠的 条评论
为什么被折叠?



