|
MySQL
|
Redis
|
MongoDB
|
类型
|
RDBMS关系型数据库
|
Nosql非关系型数据库
|
Nosql非关系型数据库
|
特点
|
数据通常需要做结构化查询,比如join,这时候,关系型数据库就要胜出一筹
|
读写性能优异。丰富的数据类型,
包括set, zset, list, hash, string 这五种数据类型
,操作非常方便。
|
高性能、易部署、易使用、高速读写。
MongoDB 是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。
|
使用场景
|
保存关系复杂的高价值数据。
当你的数据为结构化数据,符合关系型数据库的标准时,优先考虑使用mysql等关系型数据库,因为发展悠久,社区强大,数据量太大考虑优化、分库分表等策略;
|
缓存经常被读取的热数据。
Redis是完全基于内存的,存储数据量较少,所以不单独用来作为业务数据库存储,可以配合MySQL、MongoDB等解决有实时数据获取需求的快速处理;
|
保存海量低价值的数据。
数据不是特别重要,数据表结构变化较为频繁,数据量特别大,数据的并发性特别高,对事务无要求的场景。例如:日志、地理位置、json、监控数据、用户评论、爬虫数据。
|
优点
|
查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高
|
由于数据存放在内存中,因此读写性能高;
|
提供面向文档存储,操作简单,
支持大容量存储,内置GridFS。
海量数据性能优越、高扩展。
|
缺点
|
海量数据处理的时候效率会显著变慢
|
占用内存大,修改配置重启耗时
。Redis 所有数据都是放在内存中的,持久化使用 RDB 方式或者 aof 方式。
|
不支持事务、占用空间大、没有特别成熟的工具
|
redis
和
mongodb
各自的
优缺点
,怎么选择?
Redis
Redis
是一个开源的
使用
ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value非关系型
数据库
,并提供多种语言的API。
redis
是一个key-value存储系统。
Redis
是非关系型
数据库
的一种,经常用作缓存。
和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都
MongoDB
更类似
Mysql
,支持字段索引、游标操作,其优势在于查询功能比较强大,擅长查询JSON数据,能存储海量数据,但是不支持事务。
Mysql
在大数据量时效率显著下降,
MongoDB
更多时候作为关系
数据库
的一种替代。
内存管理机制
Redis
数据全部存在内存,定期写入磁盘,当内存不够时,可以选择指定的LRU算法删除数据。
MongoDB
数据存在内存,由linux系统mmap
所以总结一下,
MongoDB
的适用
场景
为:数据不是特别重要(例如通知,推送这些),数据表结构变化较为频繁,数据量特别大,数据的并发性特别高,数据结构比较特别(例如地图的位置坐标),这些情况下用
MongoDB
, 其他情况就还是用
MySQL
,这样组合
使用
就可以达到最大的效率。
MongoDB
和
Redis
区别
MongoDB
更类似
Mysql
,支持字段索引、游标操作,其优势在于查询功能比较...
扣你账户的余额,增加别人账户余额,如果只扣了你的,别人没增加这是失败;如果没扣你的钱别人也增加了那银行的赔钱。
下订单/扣库存
电商系统中这是很常见的一个
场景
,用户下单成功了,店家没收到单,不发货;用户取消了订单,但是店家却看到了订单,发了货。
分库分表
场景
当我们的数据量大了之后,我们可能会部署很多独立的
数据库
,但是你的一个逻辑可能会同时操作很多个
数据库
的表,这时候该如何保证所有的操作要么成功,要么失败。
一. springboot整合
Redis
1.1 Nosql回顾
NoSQL,泛指非关系型的
数据库
,NoSQL即Not-Only SQL,它可以作为关系型
数据库
的良好补充。随着互联网web2.0网站的兴起,非关系型的
数据库
现在成了一个极其热门的新领域,非关系
数据库
产品的发展非常迅速
而传统的关系
数据库
在应付web2.0网站,特别是超大规模和高并...
1、
Redis
介绍
1.1、什么是
Redis
全称::REmote DIctionary Server(远程字典服务器)。是完全开源免费的,用C语言编写的, 遵守BCD协议。是 一个高性能的(key/value)分布式内存
数据库
,
基于内存运行并支持持久化的NoSQL
数据库
,是当前最热门的NoSql
数据库
之一,也被人们称为数据结构服务器。
Redis
与其他 key - value 缓存产品有以下三个特点
(1)
Redis
支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载
1.
mysql
是关系型
数据库
,支持事务
2.
mongodb
,
redis
是非关系型
数据库
,不支持事务
3.
mysql
,
mongodb
,
redis
的
使用
根据如何方便进行选择
3.1 希望速度快的时候,选择
mongodb
或者
redis
3.2 数据量过大的时候,选择频繁
使用
的数据存入
redis
,其他的存入
mongodb
3.3
mongodb
不需要提前建
数据库
建表,
使用
比较方便,字段数量不确定的时候
使用
...