redis入门,什么是redis( 二 )


这是是市场反应 , 这个相信对你的选择有绝对说服力 。memcache在性能方面没有优势了 , 同时redis提供了更丰富的数据结构 , 各种原子操作 , 以及持久化(RDB/AOF) 。如果你是小规模项目 , 你甚至可以直接用它设计消息订阅 , 使用它的即时消息订阅发布(你有消息持久化需求的话可以额外用redis的列表功能等定制) 。
mongodb相比redis和memcache , mongodb的性能差距就比较大了 。mongodb最核心的是它提供的B树索引 , 这个为我们提供了范围查询的基础 , 4.0提供了事务后 , 才算真正可以勉强在某些场合替代关系数据库 。动态性和内嵌设计后的便利操作 , 很适合做中间数据管理 。PS:我最先使用mongodb , 其实主要是用它做LBS应用 。
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吧 。
3、HbaseHBase是Hadoop项目的一部分,HBase列式数据库 , BigTable的一种实现 。高效存储大量数据 , 支持列压缩 , 行事务 。适合Schema-less的数据 , 适合稀疏表 , 一个表可以容纳上亿行、上百万列 , 用做超大数据量要求扩展简单的离线分析型应用 。Hadoop的无缝集成 , 有数据可靠性和海量数据分析性能(MapReduce)的能力 。

推荐阅读