Redis和Memcached各有什么优缺点?主要的应用场景是什么?
根据我的经验,在BAT里,redis已经逐渐取代了memcached,成为分布式场景广泛使用的缓存方案 。接下来,我们就分析下,redis是如何取代memcached,成为开发者的宠儿的 。支持的存储类型不同虽然都是内存数据库,memcached不仅能够存储string,还能够存储图片,视频等形式的文件 。
然而对于更多的使用内存数据库做缓存以及分布式方案的程序开发者来说,memcached提供的string格式存储,应用场景有限,而存储图片视频的功能又十分鸡肋(主要是没这方面需求) 。相比之下,redis提供set,hash,list等多种类型的存储结构,对于做分布式缓存实在是再适合不过了 。数据落盘虽然大多数人使用缓存以及分布式方案都不会要求数据持久化,但是谁也不能保证不出现万一的情况 。
一旦发生稳定性问题,memcached挂掉后,数据是不可恢复的,而redis除了支持在配置里打开数据落盘(RDB),还能通过aof来找回数据 。内存空间与数据量memcached可以修改最大内存,使用的是LRU算法,而redis目前底层使用了自己的VM,引入了新的特性突破了物理内存的限制 。个人认为在这方面依然是redis更加优秀一些 。
使用场景基于以上提到的特点,基本我们就能分清redis与memcached的场景了 。如果对缓存数据类型超越了基本的数据结构,需要图片或者视频,多读少写,且数据量非常大的场景,那么一定要用memcached而不是redis了(比如微博大量查询好友信息,微博信息等,但是不是说微博用的是memcached方案哦) 。
mongodb,redis,hbase,三者都是nosql数据库,他们的最大区别和不同定位是什么?
一、NoSQL的简介NoSQL比关系型数据库性能高数倍 。NoSQL凭借 “易扩展、大数据、高可用、高性能、灵活性”特点强势引领全场 。CP型分布式数据库,能够保证数据的强一致性和分区容忍性 。二、NoSQL的常用种类1、mongodb优点:MongoDB最大的特点是表结构灵活可变,字段类型可以随时修改 。MongoDB是高性能、无模式的文档型数据库,文件存储格式为BSON(二进制格式的JSON),支持二级索引,在事务、复杂查询应用下无法取代关系型数据库 。
支持相比于HBase更复杂的集合查找 。简而言之,往MySQL写数据像是在做填空题,你写入的数据必须与最早定义的表结构一致,而往MongoDB写数据就像是在做问答题,想怎么写就怎么写,这灵活度不要爽太多 。缺点:比较消耗内存,有事务、join(全外连接)等短板 。因此,如果你的数据的逻辑结构非常复杂,经常需要进行复杂的多表查询或者事务操作,那显然还是MySQL这类关系型数据库更合适 。
使用场景:得益于MongoDB的这些特点,MongoDB很适合那些表结构经常改变,数据的逻辑结构没又没那么复杂不需要多表查询操作,数据量又比较大的应用场景 。2、redisRedis是现在最热门的key-value数据库,是内存亦可持久化的日志型,读写性能最强 。提供五种数据类型:String,hash,list,set及zset(sorted set) 。
适合存储全局变量和高效的分布式缓存 。当内存达到一定的阈值,数据可以定时持久化到硬盘中 。优点:Redis的最大特点当然就是key-value存储所带来的简单和高性能了 。适合读多写少的业务场景,支持操作原子性 。缺点:不支持二级索引 。也不适合做存储和分析 。因此Redis无法提供常规数据库所具备的多列查询、区段查询等复杂查询功能 。
同时,由于Redis需要把数据存在内存中,因此数据量要小于HBase与MongoDB 。应用场景:Redis牺牲了常规数据库中的数据表、复杂查询等功能,换来了很大的性能提升,特别适合那些对读写性能要求极高,且数据表结构简单(key-value、list、set之类)、查询条件也同样简单的应用场景 。如果你的数据表结构还挺复杂,你还经常需要做一些复杂查询操作,那你最好还是老老实实用MongoDB或者SQL吧 。
推荐阅读
- 买投影仪什么牌子好,无线投影仪什么牌子好
- 魅族手环有几个版本,299元魅族手环正式发布
- 三星s8怎么区别版本,两版本三星S9选谁
- noter4 哪个版本手机好,国行红米Note5将至
- 买固态硬盘和普通硬盘哪个好上1688 金泰克和西数固态硬盘哪个好
- 单反相机佳能和尼康哪个好,佳能和尼康单反相机哪个好
- 哪个牌子的移动电源比较好,41040102
- 16s和17哪个好】魅族17 魅族16s和魅族17参数对比
- 小平板电脑哪个好用,平板小电脑官网
- oppo手机怎么远程定位另一个手机 手机怎么定位对方的手机所在位置
