Nosql数据库

一、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”:“华为”}’

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姓蔡小朋友

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值