设为首页 收藏本站
查看: 1215|回复: 0

[经验分享] memcache和redis本质区别在哪里?

[复制链接]

尚未签到

发表于 2018-11-6 13:30:30 | 显示全部楼层 |阅读模式
  1.Redis中,并不是所有的数据都一直存储在内存中的,这是和Memcached相比一个最大的区别。
  2.Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。
  3.Redis支持数据的备份,即master-slave模式的数据备份。
  4.Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
  我个人认为最本质的不同是Redis在很多方面具备数据库的特征,或者说就是一个数据库系统,而Memcached只是简单的K/V缓存
  -------------------------------------------------------------------------

  •   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一样预先设计好拆分方案。
  现在新浪微博大规模的都是基于redis来架构的。
  redis和memecache的不同在于:
  1、存储方式:
  memecache 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小
  redis有部份存在硬盘上,这样能保证数据的持久性。
  2、数据支持类型:
  redis在数据支持上要比memecache多的多。
  3、使用底层模型不同:
  新版本的redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
  4、运行环境不同:
  redis目前官方只支持LINUX 上去行,从而省去了对于其它系统的支持,这样的话可以更好的把精力用于本系统 环境上的优化,虽然后来微软有一个小组为其写了补丁。但是没有放到主干上
  ------------------------------------------------------
  memcache是cache;
  redis是db,更像mongodb。
  -------------------------------------------------------
  memcache只能当做缓存,cache
  redis的内容是可以落地的,就是说跟mongodb有些类似,然后redis也可以作为缓存,并且可以设置master-slave
  --------------------------------------------------------
  其实就是重启后会不会数据丢失。
  memcache 存在内存中,分配的内存满后,会按一定的规则删除一些k/v数据,重启后自然全部丢失。
  redis 是分两部分的,有一部分是近期使用的会放到内存中,但是他的数据是全部存储在磁盘上的,可以持久化,服务器遇到重启情况,数据很快可以恢复使用。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-631600-1-1.html 上篇帖子: Redis基础介绍及安装示例 下篇帖子: memcache和redis的比较
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表