文档章节

Memcached特性、优点和限制

vinci321
 vinci321
发布于 03/14 11:58
字数 1155
阅读 349
收藏 8

这里需要说明,很多开发者觉得 Memcached 是一种分布式 Cache ,但其实 Memcached 服务端本身是单实例的,只是在客户端实现过程中可以根据存储的主键作分区存储,而这个区就是 Memcached 服务端的一个或者多个实例,如果将客户端也囊括到 Memcached 中,那么可以部分概念上说是集中式的。集中式的构架,无非两种情况: 1. 节点均衡的网状( JBoss Tree Cache ),利用 JGroup 的多播通信机制来同步数据。 2.Master-Slaves 模式(分布式文件系统),由 Master 来管理 Slave ,如何选择 Slave ,如何迁移数据,都是由 Master 来完成,但是 Master 本身也存在单点问题。

特性、优点和限制

Memory :内存存储,速度快,对于内存的要求高,所缓存的内容非持久化。对于 CPU 要求很低,所以常常采用将 Memcached 服务端和一些 CPU 高消耗 Memory 低消耗应用部属在一起 。(否则会互相挤占资源)

集中式 Cache :避开了分布式 Cache 的传播问题,但是需要非单点保证其可靠性,这需要 cluster 的工作,可以将多个 Memcached 作为一个虚拟的 cluster ,同时对于 cluster 的读写和普通的 memcached 的读写性能没有差别。

分布式扩展: Memcached 很突出的一个优点,就是采用了可分布式扩展的模式。可以将部属在一台机器上的多个 Memcached 服务端或者部署在多个机器上的 Memcached 服务端组成一个虚拟的服务端,对于调用者来说完全屏蔽和透明。提高的单机器的内存利用率 。

Socket 通信:传输内容的大小以及序列化的问题需要注意,虽然 Memcached 通常会被放置到内网作为 Cache, Socket 传输速率应该比较高(当前支持 Tcp 和 udp 两种模式,同时根据客户端的不同可以选择使用 nio 的同步或者异步调用方式),但是序列化成本和带宽成本还是需要注意。这里也提一下序列化,对于对象序列化的性能往往让大家头痛,但是如果对于同一类的 Class 对象序列化传输,第一次序列化时间比较长,后续就会优化,其实也就是说序列化最大的消耗不是对象序列化,而是类的序列化。如果穿过去的只是字符串,那么是最好的,省去了序列化的操作,因此在 Memcached 中保存的往往是较小的内容 。

特殊的内存分配机制:首先要说明的是 Memcached 支持最大的存储对象为 1M (page)。它的内存分配比较特殊,但是这样的分配方式其实也是对于性能考虑的,简单的分配机制可以更容易回收再分配,节省对于 CPU 的使用(前面的文章中有描述) 。

Cache 机制简单: 首先它没有什么同步,消息分发,两阶段提交等等,它就是一个很简单的 Cache ,把东西放进去,然后可以取出来,如果发现所提供的 Key 没有命中,那么就很直白的告诉你,你这个 key 没有任何对应的东西在缓存里,去数据库或者其他地方取,当你在外部数据源取到的时候,可以直接将内容置入到 Cache 中,这样下次就可以命中了 。这里会提到怎么去同步这些数据,两种方式,一种就是在你修改了以后立刻更新 Cache内容,这样就会即时生效。另一种是说容许有失效时间,到了失效时间,自然就会将内容删除,此时再去去的时候就会命中不了,然后再次将内容置入 Cache ,用来更新内容。后者用在一些时时性要求不高,写入不频繁的情况。

客户端的重要性: 客户端设计的合理十分重要,同时也给使用者提供了很大的空间去扩展和设计客户端来满足各种场景的需要,包括容错,权重,效率,特殊的功能性需求,嵌入框架等等。

几个应用点:小对象的缓存(用户的 token ,权限信息,资源信息)。小的静态资源缓存。 Sql 结果的缓存(这部分用的好,性能提高相当大。)

© 著作权归作者所有

共有 人打赏支持
vinci321
粉丝 6
博文 155
码字总数 210593
作品 0
加载中

评论(2)

vinci321
vinci321

引用来自“红薯”的评论

#memcached# 不完全被 #Redis# 给废了吗?
#Redis#的数据结构确实比#memcached#更多,应用场景也更广泛。接下来将研究这个问题。
红薯
红薯
#memcached# 不完全被 #Redis# 给废了吗?
MongoDB 或者 redis 可以替代 memcached 吗?

3个场景完全不同的东西。1.memcached:单一键值对内存缓存的,做对象缓存无可替代的分布式缓存;2.redis:是算法和数据结构的集合,快速的数据结构操作是他最大的特点,支持数据持久化;3.m...

zyt_1978
2016/03/20
61
0
数据库历险记(三) | 缓存框架的连环炮

文章首发于微信公众号「陈树义」,专注于 Java 技术分享的社区。点击链接扫描二维码,与500位小伙伴一起共同进步。微信公众号二维码 http://p3npq6ecr.bkt.clouddn.com/blog/chenshuyigongz...

陈树义
06/04
0
0
tomcat如何实现session共享

方法一:通过修改tomcat配置文件实现 缺点:当节点太多,tomcat集群之间session传递会影响性能 五台为分界点 通过此方法配置的集群,session信息将会被自动复制到各个节点 在Server.xml中,找...

DemonsI
08/16
0
0
xmemcached 1.3.3 发布,支持touch和GAT

memcached 1.6 添加了不少新特性,具体可以参考《what's new in memcached》(1) (2) 这两个帖子。 xmemcached 及时跟进这些新特性,1.3.3这个版本实现了二进制协议中新的两个命令touch和GAT...

小编辑
2011/06/14
717
2
深入理解分布式系统中的缓存架构(上)

本文主要介绍大型分布式系统中缓存的相关理论,常见的缓存组件以及应用场景。 1 缓存概述 缓存概述 2 缓存的分类 缓存主要分为以下四类 缓存的分类 2.1 CDN缓存 基本介绍 CDN(Content Delive...

Java填坑之路
07/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

控件WebView显示网页

一、代码编写 (一)方法一:通过打开app直接打开指定网站 1.打开Android Stutio,新建一个工程,名为Sdca。注意,名称开头必须为大写。 2.添加WebView控件 打开app esactivity_main.xml添加...

lanyu96
42分钟前
2
0
WinRAR 去除弹窗广告

想要去除它,需要用到另外一个工具resource hacker,百度一下,下载它,工具很小,安装也简单。安装过后,找到winrar安装目录下的WinRAR.exe文件,右击选择 open useing resource hacker打开...

YunOu
56分钟前
2
0
Bash工作管理详解

Bash工作管理 Bash的工作是对具体任务的一个抽象表述,更确切的说是对管道的应用上的表述。Bash中的工作在形式上表现为一组相关进程或单个进程。工作进程组分为前台和后台,前台进程会对键盘...

小陶小陶
今天
2
0
Qt那些事0.0.1

LIBS += -L$$PWD/lib/ -lStv1QMAKE_POST_LINK += $$QMAKE_COPY $$replace(PWD,"/","\\")\lib\Stv1.dll $$replace(OUT_PWD,"/","\\")\debug\Stv1.dll pro文件里,写起来按理说应该是轻松地......

Ev4n
今天
2
0
如何正确的使用动态VPS(Linux)自动更换IP

背景 现在越来越多的人开始玩网赚项目,蚂蚁再小也是肉,薅羊毛的羊毛党越来越多,一些网赚项目也越来越受欢迎,但是一般的网赚项目都是要求真实用户的,所以要想获得大量的真实ip,一种动态...

bengozhong
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部