总体来讲,TPS方面redis和memcache差不多,要大于mongodb
<wbr><wbr><wbr><wbr><wbr>memcache</wbr></wbr></wbr></wbr></wbr>数据结构单一
<wbr><wbr><wbr><wbr><wbr>redis</wbr></wbr></wbr></wbr></wbr>丰富一些,数据操作方面,redis更好一些,较少的网络IO次数
<wbr><wbr><wbr><wbr><wbr><wbr>mongodb</wbr></wbr></wbr></wbr></wbr></wbr>支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富
<wbr><wbr><wbr><wbr><wbr><wbr>redis</wbr></wbr></wbr></wbr></wbr></wbr>在2.0版本后增加了自己的VM特性,突破物理内存的限制;可以对key
value设置过期时间(类似memcache)
<wbr><wbr><wbr><wbr><wbr><wbr>memcache</wbr></wbr></wbr></wbr></wbr></wbr>可以修改最大可用内存,采用LRU算法
<wbr><wbr><wbr><wbr><wbr><wbr>mongoDB</wbr></wbr></wbr></wbr></wbr></wbr>适合大数据量的存储,依赖操作系统VM做内存管理,吃内存也比较厉害,服务不要和别的服务在一起
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>redis</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>,依赖客户端来实现分布式读写;主从复制时,每次从节点重新连接主节点都要依赖整个快照,无增量复制,因性能和效率问题,
所以单点问题比较复杂;不支持自动sharding,需要依赖程序设定一致hash<wbr></wbr>机制。
一种替代方案是,不用redis本身的复制机制,采用自己做主动复制(多份存储),或者改成增量复制的方式(需要自己实现),一致性问题和性能的权衡
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>Memcache</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>本身没有数据冗余机制,也没必要;对于故障预防,采用依赖成熟的hash或者环状的算法,解决单点故障引起的抖动问题。
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>mongoDB</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>支持master-slave,replicaset(内部采用paxos选举算法,自动故障恢复),auto
sharding机制,对客户端屏蔽了故障转移和切分机制。
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>redis</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>支持(快照、AOF):依赖快照进行持久化,aof增强了可靠性的同时,对性能有所影响
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>memcache</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>不支持,通常用在做缓存,提升性能;
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>MongoDB</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>从1.8版本开始采用binlog方式支持持久化的可靠性
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>Memcache<wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>在并发场景下,用cas保证一致性
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>redis</wbr></wbr></wbr></wbr></wbr></wbr></wbr>事务支持比较弱,只能保证事务中的每个操作连续执行
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>mongoDB</wbr></wbr></wbr></wbr></wbr></wbr></wbr>不支持事务
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>mongoDB</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>内置了数据分析的功能(mapreduce),其他不支持
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>redis</wbr></wbr></wbr></wbr></wbr></wbr></wbr>:数据量较小的更性能操作和运算上
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>memcache</wbr></wbr></wbr></wbr></wbr></wbr></wbr>:用于在动态系统中减少数据库负载,提升性能;做缓存,提高性能(适合读多写少,对于数据量比较大,可以采用sharding)
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>MongoDB:</wbr></wbr></wbr></wbr></wbr></wbr></wbr>主要解决海量数据的访问效率问题
关系和作用
1、 Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等。
2、 数据类型--Memcache在添加数据时就要指定数据的字节长度,例如:
<wbr>set key3 0 0 8</wbr>
<wbr>lxsymcto</wbr>
<wbr>STORED</wbr>
而redis不需要,如:redis 127.0.0.1:6379>set key2 "lxsymblog"
<wbr>OK</wbr>
<wbr>redis 127.0.0.1:6379>get key2</wbr>
<wbr>"lxsymblog"</wbr>
3、虚拟内存--Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘
4、过期策略--memcache在set时就指定,例如set key1 0 0 8,即永不过期。Redis可以通过例如expire 设定,例如expire name 10
5、分布式--设定memcache集群,利用magent做一主多从;redis可以做一主多从。都可以一主一从
6、存储数据安全--memcache挂掉后,数据没了;redis可以定期保存到磁盘(持久化)
7、灾难恢复--memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof恢复
<wbr></wbr>
一些memcache和redis的安装和使用就不赘述啦。只简单说说两种方案的差别。一些感想和测试结果未必足够能说明问题,有什么不妥请大家指正。因为这两天在学习的过程发现一直在更正自己认识的缺陷,每天都会否定前一天的想法。。好了,费话少说。
经过对50万个数据存储的研究发现:
每秒单条指令执行量
<wbr><wbr><wbr>memcache <wbr>约3万次</wbr></wbr></wbr></wbr>
redis <wbr><wbr>约1万次</wbr></wbr>
<wbr><wbr><wbr>而且,memcache的一大优点是可以通过一个函数直接设置过期时间,而redis需要两个函数才可以既设置了键值对又设置过期时间,也就是redis在这点上效率变成了原来的一半,即5千次,这对于大部分需求来说,有点太慢了。</wbr></wbr></wbr>
memcache的测试代码如下:
相关推荐
1、里面包含Redis、MongoDB、Memcache相关的学习文档 2、对这三者有比较详细的应用场景告之,并描述出了三者之间区别 3、提供JAVA连接Redis常见问题的解决方案 4、对MongoDB的特性有专门文档作描述 5、对于新手而言...
详细介绍了redis、mongodb、zookeeper、memcache的安装过程。文档包含redis、mongodb、zookeeper、memcache的下载地址、详细安装方法、安装所遇到的问题以及解决办法、数据库的使用等。
Redis+Memcached+MongoDB面试题精选06
memcache、redis、tair性能对比测试报告,分布缓存技术预言中有包括ehcache、memcache、redis、tair,还包括了基于MongoDB的分布式技术。测试中,考虑到各自功能的差异化特点,其中选择了memcache、redis、tair功能...
php apache mysql memcache redis mongodb
php5.4.26 apache mysql memcache redis mongodb整套环境配置用到的包
为什么使用 Redis,不用 Memcache 和 MongoDB?
PHP5.3下的memcache.dll,mongo.dll,redis.dll,省去一个一个找
NoSQL精粹 memcache redis mongodb NoSQL精粹 memcache redis mongodb
多种数据库教程(MySQL Redis Memcache MongoDB SQLite)
Bifrost ----面向生产环境MySQL同步到Redis,ClickHouse等服务的多个中间件 漫威里的彩虹桥可以将雷神放置到阿斯加德和地球 而这个Bifrost可以将你MySQL里的数据全量,实时的同步到: 雷迪斯 MongoDB ClickHouse...
mongodb是一个介于nosql数据库和mysql数据库之间的一个数据存储系统,它没有严格的数据格式,但同时支持复杂查询,...虽然MongoDB是以数据库的身份存在,但也常有人将它与Redis、Memcache比较,可见Mongo的价值所在。
NoSQL, Redis, MemCache, MongoDB, NoSQL数据库入门。
middleware_development_learning:中间件,高性能服务器,分布式存储等(redis,memcache,nginx,大容量redis pika,rocksdb,mongodb,wiredtiger存储引擎,高性能代理中间件)二次开发,性能优化,逐步整理文档...
主要介绍了python连接操作MySQL、MongoDB、Redis、memcache等数据库的方法,大家可以参考使用
我研究过的nosql,memcache,redis,mongodb都是支持分布式的,生产环境中用过memcache,redis,性能稳定。mongodb是最接近关系型数据库的,不用花很多时间去构建数据库模型,将来我会用mongodb,看一下主从配置
mongodb memcached redis 5.2-5.6每个版本的扩展都有,很是齐全
各软件列表:Nginx V1.9.5Tengine V2.1.1PHP V5.5.21与V5.6.13PHP扩展:memcache, memcached, redis, mongodb, xhprof, yafphp, xdebug, imagickMysql V5.6.27MariaDB V10.0.21Percona Server V5.6.26Memcached V...
任何需要快速、准确接收MySQL数据变化增量的场景均适用,例如广告传输流:输出到本地增量文件数据同步:可数据库同构复制,也可以跨异构数据源sync,比如MySQL到一些NoSQL,例如redis、mongodb,或者es、solr等提供...