memcache和redis,Mongodb优缺点及应用场景

1 篇文章 0 订阅
1 篇文章 0 订阅

1.mongodb 端口(27017)

(1)是文档型的非关系型数据库,使用bson结构。其优势在于查询功能比较强大,能存储海量数据,缺点是比较消耗内存。

(2)一般可以用来存放评论等半结构化数据,支持二级索引。适合存储json类型数据,不经常变化。

优点:

| 文档结构的存储方式,能够更便捷的获取数据。

| 内置GridFS,支持大容量的存储

| 内置Sharding,分片简单

| 海量数据下,性能优越

| 支持自动故障恢复(复制集)

缺点:

| 不支持事务操作

| 占用空间大

| MongoDB没有如MySQL那样成熟的维护工具

| 无法进行关联表查询,不适合用于关系多的数据

| 复杂聚合操作通过mapreduce创建,速度慢

| 模式自由,自由灵活的文件存储格式带来的数据错误

应用场景:

    从目前阿里云MongoDB云数据库的用户看,MongoDB的应用已经渗透到各个领域,比如游戏,物流,电商,内容管理,社交,物联网,视频直播等,以下是几个实际的应用案例。

    ~ 游戏场景:使用mongodb存储游戏用户信息,用户的装备,积分等直接以内嵌文档的形式存储,方便查询,更新

    ~ 物流场景:使用Mongodb存储订单信息,订单状态在运送过程中会不断更新,以Mongodb内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。

    ~ 社交场景:使用mongodb存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人,地点等功能

    ~ 物联网场景:使用mongodb存储所有接入的智能设备信息,以及设备回报的日志信息,并对这些信息进行多维度的分析

    ~ 视频直播:使用Mongodb存储用户信息,礼物信息等

 

2.redis端口(6379)

(1)是内存型数据库,数据保存在内存中,通过tcp直接存取,优势是读写性能高。

(2)redis是内存型kv数据库(健值存储数据库,其数据按照健值对的形式进行组织,索引,存储),不支持二级索引,支持list,set等多种数据格式。适合存储全局变量,适合读多写少的业务场景。很适合做缓存。

优点:

1.支持多种数据类型 string,list,set,zset,hash

2.数据可以持久化保持(AOF,快照),写入磁盘。

3.支持灾难恢复,主从复制。主机会自动将数据同步到从机,可以进行读写分离。

4.读写性能优异。

缺点:

1.redis不支持自动容错和恢复功能,主从宕机都会导致前端读写失败,需手动前端ip或者机器重新启动

2.主机宕机,主从数据复制过程中,数据未完全复制到从机。会出现数据不一致。

3.redis比较难支持在线扩容,当集群数据达到上限在线扩容变得复杂。

应用场景:

1.配合关系型数据库做高速缓存

2.缓存高频次数据,降低数据库io

3.分布式架构,做session共享

例子:

比如微信token每两小时刷新一次,就比较适合用redis缓存,读也比较方便;

在线游戏排行榜;

计时达到一定时间后显示相关广告;

按照用户投票和时间顺序,更新新闻;

统计在某个特点时间内有多少特定用户访问了某个特定资源,统计哪些特定用户访问了某篇文章;

3.Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。

端口(11211)

优点:

 一.部分容灾

假设只用一台memcache,如果这台memcache服务器挂掉了,那么请求将不断的冲击数据库,这样有可能搞死数据库,从而引发”雪崩“。如果使用多台memcache服务器,由于memcache使用一致性哈希算法,万一其中一台挂掉了,部分请求还是可以在memcache中命中,为修复系统赢得一些时间。

 二.容量问题

一台memcache服务器的容量毕竟有限,可以使用多台memcache服务器,增加缓存容量。

 三.均衡请求

使用多台memcache服务器,可以均衡请求,避免所有请求都冲进一台memcache服务器,导致服务器挂掉。

四.利用memcache分布式特性

使用一台memcache服务器,并没有利用memcache的数据分布式特性。

 

缺点:

1.不能持久化存储

   2.存储数据有限制:1M 【大于1M,认为就行分割】(内存碎片)

   3.mm存储数据只能key-value

   4.集群数据没有复制和同步机制 【崩溃不会影响程序,会从数据库中取数据】

   5.内存回收不能及时  LRU(算法):未使用内存》过期内存》最近最少使用内存   这是惰性删除

应用场景:

1.分布式应用;

2.数据库前端缓存

3.服务器间数据共享

--------------------- 
作者:唯一_xin动 
来源:CSDN 
原文:https://blog.csdn.net/weiyi_xingdong/article/details/79992032 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值