浅谈关于mysql和mongodb和redis怎么选择
MySQL | MongoDB | redis | |
---|---|---|---|
查询速度(相对) | 慢 | 中 | 快 |
支持事务? | 是 | 否 | 是(仅能保证按顺序执行) |
存储方式 | 在不同的引擎有不同的存储方式(常涉及IO) | 虚拟内存+持久化 | 全部在内存,定期持久化备份 |
数据结构 | 类似于excel | JSON格式和BSON格式 | K-V格式 |
关系型? | 是 | 否 | 否 |
拓展性 | 可通过分表等操作 | 通过复制集分片等 | 集群分片 |
举个例子:
-
MySQL适合作为主库,存储一些不经常需要改动的信息,例如用户信息,博客内容等
-
MongoDB适合存储 丢失一两个数据也无关紧要的数据,并且数据量大,数据结构比较特别的(地理坐标等),例如点赞 分享数,评论内容,粉丝信息等
-
redis适合存储用户经常访问的数据,例如用户登录的token,短时间内sql查询量高的数据也可存入redis.
总结一下,MySQL可以理解为作为excel存入硬盘(速度相对较慢),redis全部存在内存(内存空间宝贵,速度相对较快),MongoDB夹在两者中间
如果觉得我总结的不好,有问题可以指出,后期我看到会进行修改