转自: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

最新文章

  1. mysql入门
  2. 关于Android中ArrayMap/SparseArray比HashMap性能好的深入研究
  3. eclipse安装activiti工作流插件
  4. RAC数据库迁移ASM磁盘组到其它存储
  5. 转:Python requests 快速入门
  6. 高斯混合模型参数估计的EM算法
  7. Entity Framework (二) 查询
  8. 24种设计模式--命令模式【Command Pattern】
  9. Gson解析json数据(转)
  10. mysql错误号码:1129
  11. ubuntu之iptables
  12. 纯JS写动态分页样式效果
  13. PHP二维数组合并,根据某个key合并
  14. 简单介绍shell编程四剑客之awk
  15. Java this与super的仇与恨
  16. eclipse 打包
  17. windows版 Java调用人脸识别离线sdk
  18. 研究生flag
  19. js url 参数 转换成 json 对象数据
  20. jquery,checkbox无法用attr()二次勾选

热门文章

  1. [z]cxf生成javaclient
  2. JavaScript 字符串用于存储和处理文本
  3. KubeletNotReady runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
  4. 4K - 找新朋友
  5. Centos7上卸载openJdk安装,安装自己的JDK1.8
  6. Games.RecordMobileGamePlayVideo
  7. BZOJ1855或洛谷2569 [SCOI2010]股票交易
  8. swift 基本用法
  9. phpstudy报告80端口被占用
  10. JeeSite 4.0