zoukankan      html  css  js  c++  java
  • memcache和redis本质区别在哪里?

    转自:http://www.dewen.org/q/971/memcache%E5%92%8Credis%E6%9C%AC%E8%B4%A8%E5%8C%BA%E5%88%AB%E5%9C%A8%E5%93%AA%E9%87%8C%EF%BC%9F

    7个答案 票 数
    何远伦
    4 票
    何远伦8673
    1.Redis中,并不是所有的数据都一直存储在内存中的,这是和Memcached相比一个最大的区别。

    2.Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。

    3.Redis支持数据的备份,即master-slave模式的数据备份。

    4.Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。

    我个人认为最本质的不同是Redis在很多方面具备数据库的特征,或者说就是一个数据库系统,而Memcached只是简单的K/V缓存

    何远伦 编辑于 2012-01-10
    评论 (1) • 链接 • 2012-01-10
    0
    这么比起来,redis完胜啊 – kazaff 2012-09-10
    薛帮书
    3 票
    薛帮书724
    Schema MySQL: 需事先设计 Memcached: 无需设计 Redis: 小型系统可以不用,但是如果要合理的规划及使用Redis,需要事先进行类似如下一些规划 数据项: value保存的内容是什么,如用户资料 Redis数据类型: 如String, List 数据大小: 如100字节 记录数: 如100万条(决定是否需要拆分)
    上面的规划就是一种schema,为什么Redis在大型项目需要事先设计schema?因为Redis服务器有容量限制,数据容量不能超出物理内存大 小,同时考虑到业务数据的可扩充性,记录数会持续增多、单条记录的内容也都会增长,因此需要提前规划好容量,数据架构师就是通过schema来判断当前业 务的Redis是否需要“分库分表”以满足可扩展需求。
    2. 容量及带宽规划
    容量规划
    MySQL: < 硬盘大小
    Memcached: < RAM
    Redis: < RAM
    带宽规划
    由于Redis比MySQL快10倍以上,因此带宽也是需要事先规划,避免带宽跑满而出现瓶颈。
    3. 性能规划(QPS)
    当系统读写出现瓶颈,通常如何解决?
    MySQL
    写: 拆分到多服务器
    读: (1) 拆分 (2) 写少也可以通过增加Slave来解决
    Memcached
    读写: 都通过hash拆分到更多节点。
    Redis:
    写:拆分
    读: (1) 拆分 (2) 写少也可以通过增加Slave来解决
    4. 可扩展性
    MySQL: 分库分表
    Memcached: hash分布
    Redis:也可以分库,也可以hash分布
    小结
    通过以上分析,Redis在很多方面同时具备MySQL及Memcached使用特征,在某些方面则更像MySQL。
    由于Redis数据不能超过内存大小,一方面需要进行事先容量规划,保证容量足够;另外一方面设计上需要防止数据规模无限制增加,进而导致Redis不可扩展。
    Redis需要象MySQL一样预先设计好拆分方案。

    评论 (0) • 链接 • 2012-01-17
    天地一指
    3 票
    天地一指409
    现在新浪微博大规模的都是基于redis来架构的。
    redis和memecache的不同在于:
    1、存储方式:
    memecache 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小
    redis有部份存在硬盘上,这样能保证数据的持久性。
    2、数据支持类型:
    redis在数据支持上要比memecache多的多。
    3、使用底层模型不同:
    新版本的redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
    4、运行环境不同:
    redis目前官方只支持LINUX 上去行,从而省去了对于其它系统的支持,这样的话可以更好的把精力用于本系统 环境上的优化,虽然后来微软有一个小组为其写了补丁。但是没有放到主干上

    评论 (1) • 链接 • 2012-01-17
    0
    VM不是废弃了么。 – magic 2012-01-17
    magic
    1 票
    magic1563
    memcache是cache;
    redis是db,更像mongodb。

    评论 (0) • 链接 • 2012-01-10
    jimmy
    1 票
    jimmy140
    memcache只能当做缓存,cache
    redis的内容是可以落地的,就是说跟mongodb有些类似,然后redis也可以作为缓存,并且可以设置master-slave

    评论 (0) • 链接 • 2012-02-13
    wayne173
    0 票
    wayne17356
    其实就是重启后会不会数据丢失。
    memcache 存在内存中,分配的内存满后,会按一定的规则删除一些k/v数据,重启后自然全部丢失。
    redis 是分两部分的,有一部分是近期使用的会放到内存中,但是他的数据是全部存储在磁盘上的,可以持久化,服务器遇到重启情况,数据很快可以恢复使用。

    评论 (0) • 链接 • 2012-07-11
    jerrysearch
    0 票
    jerrysearch45
    我认为本质的区别就是两种nosql实现对于事务性操作的支持不同,memcache为了实现数据一致性采用了一种乐观锁的思想,导致其在数据插入时很浪费资源,所以memcache性能全面低于redis

    评论 (0) • 链接 • 2012-09-13

  • 相关阅读:
    SpringMvc 框架
    面试:你最大的长处和弱点分别是什么?这些长处和弱点对你在企业的业绩会有什么样的影响?
    线程、并发、并行、进程是什么,以及如何开启新的线程?
    面向对象三大特性
    一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别?
    JavaScript 引擎
    Spring Data JPA简介 Spring Data JPA特点
    博主博客
    微信相关
    关于正则表达式
  • 原文地址:https://www.cnblogs.com/jiajinyi/p/3530180.html
Copyright © 2011-2022 走看看