redis和memcached选择,对比分析
memcache和redis是互联网分层架构中,最常用的KV缓存。不少同学在选型的时候会纠结,到底是选择memcache还是redis?
memcache提供的功能是redis提供的功能的子集,不用想太多,选redis准没错?
redis倾向:
复杂的数据结构:value是哈希,列表,集合,有序集合这类复杂的数据结构时,会选择redis,因为mc无法满足这些需求。用户订单列表,用户消息,帖子评论列表等。
持久化: mc无法满足持久化的需求,只得选择redis。但是千万不要把redis真的做数据库用
a. redis的定期快照不能保证数据不丢失
b.redis的AOF会降低效率,并且不能支持太大的数据量
c.不要期望redis做固化存储会比mysql做得好,不同的工具做各自擅长的事情
d.redis挂掉重启后能够快速恢复热数据,但是如果着期间有数据修改,可能导致数据不一致,因此,只读场景,或者允许一些不一致的业务场景,可以尝试开启redis的固化功能
自带高可用集群: redis自身支持集群,实现主从读写分离功能,官方也提供sentinal哨兵的集群管理工具,实现主从监控,故障转移,memcached实现集群需要二次开发了
但是很多时候需要考虑,真的需要高可用么?缓存很多时候是运行cache miss的,cache挂了可以读db的
存储的内容比较大 : macache 单个value最大存储 1M,超过1M只能用redis了。
注意:纯的k-v 而且数据量特别大,并发也很大 或许使用memcache更合适
a.内存分配:memcache使用 预分配内存池的烦事管理内存,更节省内存分配时间,redis使用临时申请的方式,kennel导致碎片。对比看memcache更快一点
b.memcache把所有的数据存储在物理内存里。redis有自己的VM机制,理论上能够存储比物理内存更多的数据,当数据超量时,会引发swap,把冷数据刷到磁盘上。对比看数据量大时,memcache更快一点
c.memcache使用非阻塞IO复用模型,redis也是使用非阻塞IO复用模型,但由于redis还提供一些非KV存储之外的排序,聚合功能,在执行这些功能时,复杂的CPU计算,会阻塞整个IO调度。从这一点上,由于redis提供的功能较多,mc会更快一些。
d.memcache使用多线程,主线程监听,worker子线程接受请求,执行读写,这个过程中,可能存在锁冲突。redis使用单线程,虽无锁冲突,但难以利用多核的特性提升整体吞吐量。从这一点上,mc会快一些。
代码可读性,代码质量:看过mc和redis的代码,从可读性上说,redis是我见过代码最清爽的软件,甚至没有之一,或许简单是redis设计的初衷,编译redis甚至不需要configure,不需要依赖第三方库,一个make就搞定了。而memcache,可能是考虑了太多的扩展性,多系统的兼容性,代码不清爽,看起来费劲。
redis和memcached选择,对比分析的更多相关文章
- Redis与Memcached简单对比(转)
很多开发者都认为Redis不可能比Memcached快,Memcached完全基于内存,而Redis具有持久化保存特性,即使是异步的,Redis也不可能比Memcached快.但是测试结果基本是Red ...
- redis和memcached的对比与选型
相似处: 1:Memcached与Redis都属于内存内.键值数据存储方案.均属于NoSQL家族,而且都基于同样的键值数据模型.双方都选择将全部数据保存在内存当中,这自然也就让它们成为非常理想 ...
- redis和memcached的对比
redis:① 支持的数据结构比较多 ② 支持集群 ③ 支持数据持久化,RDB.AOF ④ 单个value最大值512MB ⑤ 单核 memcached: ① 支持K/V结构的数据 ② 不支 ...
- 该用哪个:Redis与Memcached之间如何选择呢?
华为云分布式缓存Redis5.0和Memcached都是华为云DCS的核心产品. 那么在不同的使用场景之下,如何选择Redis5.0和Memcached呢? 就由小编为大家进行详细的数据对比分析吧 R ...
- 内存数据库:Redis与Memcached的区别
Redis与Memcached的区别 传统MySQL+ Memcached架构遇到的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都 ...
- Redis和Memcached整体
Redis和Memcached整体对比 Redis的作者Salvatore Sanfilippo曾经对这两种基于内存的数据存储系统进行过比较,总体来看还是比较客观的,现总结如下: 1)性能对比:由于R ...
- Redis与Memcached的实现对比
原文链接:http://www.tuicool.com/articles/qUBNZva Memcached 与 Redis ,作为近些年最常用的缓存服务器,相信大家对它们再熟悉不过了.前两年还在学校 ...
- mongodb,redis,memcached,mysql对比
1.性能都比较高,性能对我们来说应该都不是瓶颈总体来讲,TPS方面redis和memcache差不多,要大于mongodb 2.操作的便利性memcache数据结构单一redis丰富一些,数据操作方面 ...
- 分布式缓存技术PK:选择Redis还是Memcached?
作者:田京昆(腾讯后台研发工程师) 来源:腾云阁(https://www.qcloud.com/community/article/129) Memcached和Redis,作为近些年最常用的缓存服务 ...
随机推荐
- SQL Server 调优系列基础篇 - 索引运算总结
前言 上几篇文章我们介绍了如何查看查询计划.常用运算符的介绍.并行运算的方式,有兴趣的可以点击查看. 本篇将分析在SQL Server中,如何利用先有索引项进行查询性能优化,通过了解这些索引项的应用方 ...
- 自己写的一个delphi正整数快速排序
type TIntArr= array of word; procedure MyQSort(var arr: TIntArr; low: word; high: word); //word可以改 ...
- OPENVZ低版本centos6.5安装BBR加速手记
玩 VPS,开机第一件事就是安装 BBR,至于效果怎么样还真不好说,依据不同的线路质量而定,但有总比没有好. 因为这次用的是 openvz 平台,所以找了一个网上的 ovz 专用的 BBR 一键安装代 ...
- 0121 集合类 ArrayList 的练习
集合接口的常用方法: 1.List接口 public class Jihe { public static void main(String[] args) { ArrayList<String ...
- Word2003文档窗口分成上下两个独立的窗口
http://www.officezu.com/word/2003/index16.html 拆分窗口就是把一个Word2003文档窗口分成上下两个独立的窗口,从而可以通过两个Word2003文档窗口 ...
- SWIFT Optional Value
SWIFT中有一个类型定义叫可选值,在变量类型后面加一个?号即可定义一个类型为Optional Value的变量,当在使用变量时要用到强制解包!. 如在页面上有一个可选输入年龄的框,在接受数据的时间就 ...
- linux下源码安装jdk1.8和tomcat8.5
Java是目前可移植性较高的语言,相当火热,tomcat运行就需要Java语言环境 0.java简介 1)tomcat运行需要对应的Java环境,Java环境通过安装jdk来获得2)为了防止兼容性问题 ...
- opencv-python教程学习系列5-处理鼠标事件
前言 opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍opencv-python处理鼠标事件,坚持学习,共同进步. 系列教程参照OpenCV-Pytho ...
- for (Sms sms : smsLists){}
for (Sms sms : smsLists){ } //类似下面的for循环 :Smslists[i]!=NULL;i++) { Sms sms=Smslists[i]; } /*其实就是把Sms ...
- 给div加滚动条
<div style="width:175px;height:100px;background:white;overflow:scroll;"> <span> ...