定义
redis是一个速度非常快的非关系型数据库,存储key与5种不同类型的value之间映射,可以将存储在内存的键值对数据持久化到硬盘,可以使用复制特性来进行扩展性能,还可以使用客户端分片来扩展写性能.
对比其他数据库
说明 | mysql | mongodb | redis |
---|---|---|---|
类型 | 关系型数据库 | 非关系型数据库 | 非关系型数据库 |
类型补充 | 面向文档的数据库 | 内存数据库 | |
存储介质 | 硬盘 | 硬盘 | 内存 |
数据存储 | 每个数据库可以包含多个表,每个表包含多个行,每个表的字段固定,支持索引,关联查询 | 每个数据库可以包含多个表,但是不包含行,而是包含多个BSON文档,通过key-document关联 | 没有数据库与表的概念,就是一个键值对,存储的类型包含 字符串,列表,集合,散列表,有序集合5种 |
持久化方式 | 所有数据全部在硬盘上,需要的时候通过才会通过磁盘交换到内存中(mysql也可以设置缓存) | mongodb的所有数据实际上是存放在硬盘的,所有要操作的数据通过mmap的方式映射到内存某个区域内。mongodb就在这块区域里面进行数据修改,避免了零碎的硬盘操作。至于mmap上的内容flush到硬盘就是操作系统的事情了,所以,如果,mongodb在内存中修改了数据后,mmap数据flush到硬盘之前,系统宕机了,数据就会丢失 | redis所有数据都是放在内存中的,持久化是使用RDB方式或者aof方式 |
性能对比
当物理内存够用的时候,redis>mongodb>mysql
使用场景
mysql :
1 存储在磁盘上,而不是内存上,内存资源更加宝贵,虽然速度更快。
2 支持关联查询
mongoDB
1 虽然存储是用的磁盘,但是实际操作却是操作内存,速度比较mysql更快.但是还是会受到磁盘的限制比如在普通硬盘上写入 和 在 固态硬盘上写入.
2 文档模型,字段不固定,动态存储
3 关联查询不是它的优势,可通过DBref进行关联查询
redis
1 纯粹的内存数据库,当然在持久化的时候还是需要依赖硬盘
2 不支持关联查询