ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2019-08-06 14:52:20  阅读:190  来源: 互联网

标签:存储 Mongodb 数据库 redis memcache 内存 服务器 数据


1.mongodb 端口(27017)

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

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

  优点:

  • 文档结构的存储方式,能够更便捷的获取数据
  • 内置GridFS,支持大容量的存储
  • 内置Sharding,分片简单
  • 海量数据下,性能优越
  • 支持自动故障恢复(复制集)

  缺点:

  • 不支持事务操作
  • 占用空间过大
  • MongoDB没有如MySQL那样成熟的维护工具
  • 无法进行关联表查询,不适用于关系多的数据
  • 复杂聚合操作通过mapreduce创建,速度慢
  • 模式自由,自由灵活的文件存储格式带来的数据错误

  应用场景:

     

2.redis 端口(6379)

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

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

   优点:

  • 支持多种数据类型 string、list、set、zset、hash
  • 数据可以持久化保持(AOF、快照),写入硬盘,
  • 支持灾难恢复,主从复制。主机会自动将数据同步到从机,可以进行读写分离。
  • 读写性能优异。

   缺点:

  • redis不支持自动容错和恢复功能,主从当机都会导致前端读写失败,需手动前端Ip或者机器重新启动
  • 主机宕机,主从数据复制过程中,数据未完全复制到从机,会出现数据不一致。
  • redis较难支持在线扩容,当集群数据达到上限在线扩容变得复杂。

   应用场景:

  • 配合关系型数据库做高速缓存
  • 缓存高频次数据,降低数据库io
  • 分布式架构,做session共享

   例子:

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

     在线游戏排行榜;计时达到一定时间后显示相关广告;按照用户投票和时间排序,更新新闻;

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

 

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

   优点:

  • 部分容灾:假设只用一台memcache,如果这台memcache服务器挂掉了,那么请求将不断的冲击数据库,这样有可能搞死数据库,从而引发”雪崩“。如果使用多台memcache服务器,由于memcache使用一致性哈希算法,万一其中一台挂掉了,部分请求还是可以在memcache中命中,为修复系统赢得一些时间。
  • 容量问题:一台memcache服务器的容量毕竟有限,可以使用多台memcache服务器,增加缓存容量。
  • 均衡请求:使用多台memcache服务器,可以均衡请求,避免所有请求都冲进一台memcache服务器,导致服务器挂掉。
  • 利用memcache分布式特性:使用一台memcache服务器,并没有利用memcache的数据分布式特性。

   缺点:

  • 不能持久化存储
  • 存储数据有限制:1M 【大于1M,认为就行分割】(内存碎片)
  • mm存储数据只能key-value
  • 集群数据没有复制和同步机制 【崩溃不会影响程序,会从数据库中取数据】
  • 内存回收不能及时  LRU(算法):未使用内存》过期内存》最近最少使用内存   这是惰性删除

   应用场景:

  • 分布式缓存
  • 数据库前段缓存
  • 服务器间数据共享

 

标签:存储,Mongodb,数据库,redis,memcache,内存,服务器,数据
来源: https://www.cnblogs.com/mzhaox/p/11308840.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有