文档章节

Redis和Memcached的区别和选型

dev_chao
 dev_chao
发布于 2017/04/10 17:05
字数 775
阅读 46
收藏 0

精选30+云产品,助力企业轻松上云!>>>

1.先看下面的对比图

  Redis Memcached
网络IO模型 单线程的IO复用的网络模型 多线程的非阻塞IO复用的网络模型
支持的数据结构 key-value数据类型,还支持list、set、zset、hash等 key-value形式存储和访问数据
内存管理机制 现场申请内存 预分配的内存池
数据存储及持久化 in-memory、支持持久化:快照、AOF in-memory,不支持持久化
虚拟内存 物理内存用完时,可利用虚拟内存(不建议开启,开销大) 物理内存用完时,LRU替换掉不常用的缓存
数据一致性 提供事务,保证命令的原子性,中间不会被任何操作打断 提供了cas命令,保证多个并发访问操作同一份数据的一致性
集群管理 服务器端构建分布式存储 只能采用客户端实现分布式存储
性能 单核,数据量<10w 时高,数据量>10w时低 多核,数据量<10w时低,数据量>10w时高

2.集群键值分布

      Memcached本身并不支持分布式,因此只能在客户端通过像一致性哈希这样的分布式算法来实现Memcached的分布式存储。相较于Memcached只能采用客户端实现分布式存储,Redis更偏向于在服务器端构建分布式存储。采用键-槽映射算法,最终定位到缓存所在节点。

3.总结

      a.没有必要过多的关心性能,因为二者的性能都已经足够高了。由于Redis只使用单核,而Memcached可以使用多核,所以在比较上,平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。说了这么多,结论是,无论你使用哪一个,每秒处理请求的次数都不会成为瓶颈。(比如瓶颈可能会在网卡)

      b.如果要说内存使用效率,使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached。当然,这和你的应用场景和数据特性有关。 (这点不是很理解)

      c.如果你对数据持久化和数据同步有所要求,那么推荐你选择Redis,因为这两个特性Memcached都不具备。即使你只是希望在升级或者重启系统后缓存数据不会丢失,选择Redis也是明智的。

      因此,我们可以得出一个结论:在简单的Key/Value应用场景(例如缓存),Memcached拥有更高的读写性能;而在数据持久化和数据同步场景,Redis拥有更加强大的功能和更为丰富的数据类型。

 

dev_chao
粉丝 5
博文 36
码字总数 11158
作品 0
广州
私信 提问
加载中
请先登录后再评论。
MongoDB与Redis的区别?他们分别用在什么场景下最合适?

最近在学习的时候,感觉对MongoDB与Redis的应用场景有点蒙,不知道这两个东西有什么核心应用区别,另外,还有人把这两个东西与Memcached比较,更是感觉风马牛不相及。 个人理解Memcached纯粹...

bluntFish
2016/05/22
2W
3
微服务实践分享(5)缓存中心

1.redis应用场景【https://www.huaweicloud.com/product/dcs.html】 2.选型 3.业界情况: 阿里云【1】 京东金融【2】 携程开源Redis多数据中心解决方案-XPipe【3】 Codis 是一个分布式 Redi...

osc_4l0h8in9
2018/07/02
2
0
系统架构——从Memcache单点说起

要回答“文章摘要”里面的单点问题,其实回头想想,也不难。但是,这种系统架构的东西,不要为解决问题而解决问题,需要衡量一下这个改动对系统性能方面的影响。 1、系统架构的演变 余浩东(...

java_speed
2014/02/04
598
0
BAT研发面试36题总结:Spring+Redis+Docker+Dubbo+高并发架构

面试总结: java的基础知识点,主要围绕在集合类和多线程等:ArrayList、LinkedList、HashSet、HashpMap的数据结果,以及如何扩容、以及ConcurrentHashMap相关的多线程安全等。 JVM的内存分配...

java架构
2018/09/18
0
0
BAT研发面试36题总结:Spring+Redis+Docker+Dubbo+高并发架构

面试总结: java的基础知识点,主要围绕在集合类和多线程等:ArrayList、LinkedList、HashSet、HashpMap的数据结果,以及如何扩容、以及ConcurrentHashMap相关的多线程安全等。 JVM的内存分配...

java知音
2018/09/18
47
0

没有更多内容

加载失败,请刷新页面

加载更多

唐山5.1级地震 百度人工智能技术帮上忙:成都减灾所提前30秒让北京、天津市民收到预警

本文作者:y****n 7月12日6时38分在河北唐山市古冶区发生5.1级地震,成都高新减灾研究所与应急管理部门联合建成的大陆地震预警网成功预警该地震,给唐山市提前3秒预警,给天津市提前33秒预警...

百度开发者中心
昨天
30
0
如何使用PHP发送POST请求? - How do I send a POST request with PHP?

问题: Actually I want to read the contents that come after the search query, when it is done. 实际上,我想阅读搜索查询之后的内容,完成之后。 The problem is that the URL only a......

javail
今天
14
0
如何从Java读取文件夹中的所有文件? - How to read all files in a folder from Java?

问题: 如何通过Java读取文件夹中的所有文件? 解决方案: 参考一: https://stackoom.com/question/7jt2/如何从Java读取文件夹中的所有文件 参考二: https://oldbug.net/q/7jt2/How-to-rea...

富含淀粉
今天
25
0
主机“ xxx.xx.xxx.xxx”不允许连接到该MySQL服务器

问题: This should be dead simple, but I cannot get it to work for the life of me. 这本来应该很简单,但是我无法让它在我的一生中发挥作用。 I'm just trying to connect remotely to......

技术盛宴
今天
27
0
OSChina 周二乱弹 —— 附近居民接连失踪,你们有什么头绪吗

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《伤离别(原版)》- 黄霑 手机党少年们想听歌,请使劲儿戳(这里) @巴拉迪维 :睡...

小小编辑
今天
48
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部