SlideShare uma empresa Scribd logo
1 de 26
Memcached cocowool@gmail.com
Memcached的历史及现状 Memcached服务器端介绍 memcache使用最佳实践 memcache的分布式算法 Memcached运维讨论
Memcached的历史及现状 2003年,LiveJournal 作者Brad Fitzpatrick 当前版本1.4.5(2010-4-3) 目前应用在许多大型网站中 Flickr、Twitter、Craiglist, etc
Memcached的历史及现状 什么是Memcached Memory Cache Daemon memcached is a server that caches Name Value Pairs (NVPs) in memory Memcached能做什么 任何元素:HTML片段、二进制对象、数据结果集 极大地提高数据的获取效率 Memcached不能做什么 Memcached不是持久化的存储 Memcached本身不支持分布式和高可用
一般情况下Memcached的用途
Memcached的分布式 Memcached尽管是“分布式”服务器,但是服务器端并没有分布式的功能。各个Memcached不会互相通信以共享信息。Memcached的分布式,完全取决于客户端的实现。
Memcached服务器端介绍 Memcached的安装 支持Linux、Windows多种平台 安装过程简单 Memcached的启动 端口、内存、Daemon 新版本对于多线程的支持 Memcached的几个限制: Key的长度不能超过250个字符 存储的数据不能超过1MB 最大同时连接数200
Memcached支持的参数
Memcached服务器端介绍 可以使用telnet命令进行测试 telnet servername port 支持的命令 存储类命令 ADD、SET、REPLACE、APPEND、PREPEND、CAS 读取类命令 GET、GETS DELETE,Least Recently Used(LRU)算法 INCR/DECR
Memcached服务器端介绍 支持的命令 状态类命令 STATS、STATS ITEMS、STATS SLABS、STATSSIZES flush_all 服务器效率的检查 Cache hits ratio 缓存命中率 get_hits / (get_hits + get_misses) gets 和 sets 百分比 cmd_get / cmd_set 这个比例应当越高越好 curr_items/total_items/bytes
memcache使用最佳实践 如何在应用中使用Memcached 需要有客户端支持,目前有丰富的客户端 Perl、PHP、Python、Ruby、Java、.NET/C#、C、Postgres、Chicken 客户端的作用 实现Memcache的分布式算法 提供压缩功能,使Memcached存储更大容量数据
memcache使用最佳实践 PHP客户端 特点 以模块的方式提供支持 从PHP4.3.3以后的版本开始 依赖于zlib提供数据的压缩功能 配置参数
memcache使用最佳实践 PHP客户端 配置参数
memcache使用最佳实践 PHP客户端 支持的函数列表
memcache使用最佳实践 Memcached的使用场景 Key的命名规范 ObjectName:ObjectType:Key 使用SQL语句作为键值 如何处理数据的更新 Flush Cache 预清除缓存(Proactively Clear Cache) 读取数据时强制重设缓存
memcache使用最佳实践 如何避免多个客户端的更新 增加锁机制 依赖Memcached返回成功信息的机制 通过GET和SET实现 如何设置合适的过期时间 数据的请求频率 数据的更新频率,更新越频繁,过期时间宜短 数据是由外部程序来更新的(第三方) 避免数据过期时的并发访问
memcache使用最佳实践 缓存什么内容 慢查询SQL 减少Memcached的影响 确保即便所有的服务器都Down了,服务仍正常 Client的重试动作
memcache的分布式算法
memcache的分布式算法
memcache的分布式算法 Cache::Memcached的分布算法 根据余数进行分散(CRC32) 支持Rehash,可以设置关闭 在缓存服务器发生重组时代价较大
memcache的分布式算法 Consistent Hashing
memcache的分布式算法 Consistent Hashing
memcache的分布式算法 Libketama Take your list of servers (eg: 1.2.3.4:11211, 5.6.7.8:11211, 9.8.7.6:11211) Hash each server string to several (100-200) unsigned ints Conceptually, these numbers are placed on a circle called the continuum. (imagine a clock face that goes from 0 to 2^32) Each number links to the server it was hashed from, so servers appear at several points on the continuum, by each of the numbers they hashed to. To map a key->server, hash your key to a single unsigned int, and find the next biggest number on the continuum. The server linked to that number is the correct server for that key. If you hash your key to a value near 2^32 and there are no points on the continuum greater than your hash, return the first server in the continuum.
Memcached运维讨论 运维工具与方法 telnet与stats命令 memcached-tool 查看memcached中slab的使用状况 几个重要参数 curr_connections listen_disabled_num listen_disabled_num
Memcached的扩展 memcached Storage Engine for MySQL Apache memcached Session repcached memcachefs Memcachedb Flared Tokyo Tyrant
参考资料 Using Memcached – How to scale your website easily http://timyang.net/tag/cache/ http://www.mysqlperformanceblog.com/2006/08/09/cache-performance-comparison/ http://www.last.fm/user/RJ/journal/2007/04/10/rz_libketama_-_a_consistent_hashing_algo_for_memcache_clients 从Memcached分布式应用看一致性哈希散列函数的选择 Memcache的mutex设计模式 Memcached数据被踢(evictions>0)现象分析 Cache Performance Comparison

Mais conteúdo relacionado

Mais procurados

Linux内存管理
Linux内存管理Linux内存管理
Linux内存管理zijia
 
了解集群
了解集群了解集群
了解集群Feng Yu
 
Jkcn MySQLDB 架构
Jkcn MySQLDB 架构Jkcn MySQLDB 架构
Jkcn MySQLDB 架构Louis liu
 
Introduction to MySQL and phpMyAdmin
Introduction to MySQL and phpMyAdminIntroduction to MySQL and phpMyAdmin
Introduction to MySQL and phpMyAdminDrake Huang
 
MySQL和IO(下)
MySQL和IO(下)MySQL和IO(下)
MySQL和IO(下)Feng Yu
 
高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践孙立
 
了解内存
了解内存了解内存
了解内存Feng Yu
 
Erlang分布式系统的的领域语言
Erlang分布式系统的的领域语言Erlang分布式系统的的领域语言
Erlang分布式系统的的领域语言Feng Yu
 
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMailServlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMailJustin Lin
 
Proxmox VE 4.3 vs VMWare vSphere 6.1
Proxmox VE 4.3 vs VMWare vSphere 6.1Proxmox VE 4.3 vs VMWare vSphere 6.1
Proxmox VE 4.3 vs VMWare vSphere 6.1Chris Hsiang
 
13. 瀏覽器儲存方案
13. 瀏覽器儲存方案13. 瀏覽器儲存方案
13. 瀏覽器儲存方案Justin Lin
 
Mosut linux usb
Mosut linux usbMosut linux usb
Mosut linux usbcam11505
 
构建基于Lamp的网站架构
构建基于Lamp的网站架构构建基于Lamp的网站架构
构建基于Lamp的网站架构Cosey Lee
 
数据库与ssd的实践与探索-2011数据库技术大会
数据库与ssd的实践与探索-2011数据库技术大会数据库与ssd的实践与探索-2011数据库技术大会
数据库与ssd的实践与探索-2011数据库技术大会freezr
 

Mais procurados (15)

Linux内存管理
Linux内存管理Linux内存管理
Linux内存管理
 
了解集群
了解集群了解集群
了解集群
 
Jkcn MySQLDB 架构
Jkcn MySQLDB 架构Jkcn MySQLDB 架构
Jkcn MySQLDB 架构
 
Introduction to MySQL and phpMyAdmin
Introduction to MySQL and phpMyAdminIntroduction to MySQL and phpMyAdmin
Introduction to MySQL and phpMyAdmin
 
MySQL和IO(下)
MySQL和IO(下)MySQL和IO(下)
MySQL和IO(下)
 
Proxmox 5.0
Proxmox 5.0Proxmox 5.0
Proxmox 5.0
 
高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践
 
了解内存
了解内存了解内存
了解内存
 
Erlang分布式系统的的领域语言
Erlang分布式系统的的领域语言Erlang分布式系统的的领域语言
Erlang分布式系统的的领域语言
 
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMailServlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
 
Proxmox VE 4.3 vs VMWare vSphere 6.1
Proxmox VE 4.3 vs VMWare vSphere 6.1Proxmox VE 4.3 vs VMWare vSphere 6.1
Proxmox VE 4.3 vs VMWare vSphere 6.1
 
13. 瀏覽器儲存方案
13. 瀏覽器儲存方案13. 瀏覽器儲存方案
13. 瀏覽器儲存方案
 
Mosut linux usb
Mosut linux usbMosut linux usb
Mosut linux usb
 
构建基于Lamp的网站架构
构建基于Lamp的网站架构构建基于Lamp的网站架构
构建基于Lamp的网站架构
 
数据库与ssd的实践与探索-2011数据库技术大会
数据库与ssd的实践与探索-2011数据库技术大会数据库与ssd的实践与探索-2011数据库技术大会
数据库与ssd的实践与探索-2011数据库技术大会
 

Destaque

High Performance Weibo QCon Beijing 2011
High Performance Weibo QCon Beijing 2011High Performance Weibo QCon Beijing 2011
High Performance Weibo QCon Beijing 2011Tim Y
 
微博cache设计谈
微博cache设计谈微博cache设计谈
微博cache设计谈Tim Y
 
大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)Tim Y
 
线上问题排查交流
线上问题排查交流线上问题排查交流
线上问题排查交流Edward Lee
 
Linux Performance Analysis and Tools
Linux Performance Analysis and ToolsLinux Performance Analysis and Tools
Linux Performance Analysis and ToolsBrendan Gregg
 
微博架构与平台安全
微博架构与平台安全微博架构与平台安全
微博架构与平台安全Tim Y
 

Destaque (7)

High Performance Weibo QCon Beijing 2011
High Performance Weibo QCon Beijing 2011High Performance Weibo QCon Beijing 2011
High Performance Weibo QCon Beijing 2011
 
Git 实战
Git 实战Git 实战
Git 实战
 
微博cache设计谈
微博cache设计谈微博cache设计谈
微博cache设计谈
 
大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)
 
线上问题排查交流
线上问题排查交流线上问题排查交流
线上问题排查交流
 
Linux Performance Analysis and Tools
Linux Performance Analysis and ToolsLinux Performance Analysis and Tools
Linux Performance Analysis and Tools
 
微博架构与平台安全
微博架构与平台安全微博架构与平台安全
微博架构与平台安全
 

Semelhante a Memcached分析

【VM保護備份專題】Dell Power Protect Data Manager (PPDM) 詳解TSDM機制
【VM保護備份專題】Dell Power Protect Data Manager (PPDM) 詳解TSDM機制【VM保護備份專題】Dell Power Protect Data Manager (PPDM) 詳解TSDM機制
【VM保護備份專題】Dell Power Protect Data Manager (PPDM) 詳解TSDM機制裝機安 Angelo
 
浅谈网站架构中缓存的应用
浅谈网站架构中缓存的应用浅谈网站架构中缓存的应用
浅谈网站架构中缓存的应用powerzhuye
 
浅谈网站架构中缓存的应用
浅谈网站架构中缓存的应用浅谈网站架构中缓存的应用
浅谈网站架构中缓存的应用kevin zhang
 
大众点评网的技术变迁之路
大众点评网的技术变迁之路大众点评网的技术变迁之路
大众点评网的技术变迁之路jeffz
 
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)Shanda innovation institute
 
Times Ten Training
Times Ten TrainingTimes Ten Training
Times Ten TrainingLi Chen
 
构建可扩展的微博系统
构建可扩展的微博系统构建可扩展的微博系统
构建可扩展的微博系统lonegunman
 
Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用iammutex
 
优酷 Web网站架构案例分析
优酷   Web网站架构案例分析优酷   Web网站架构案例分析
优酷 Web网站架构案例分析George Ang
 
Youku arch qcon2009_beijing
Youku arch qcon2009_beijingYouku arch qcon2009_beijing
Youku arch qcon2009_beijingdrewz lin
 
Key value store
Key value storeKey value store
Key value storexuanhan863
 
淘宝Java中间件之路 it168
淘宝Java中间件之路 it168淘宝Java中间件之路 it168
淘宝Java中间件之路 it168vanadies10
 
使用LVS集群架设高可扩展的网络服务
使用LVS集群架设高可扩展的网络服务使用LVS集群架设高可扩展的网络服务
使用LVS集群架设高可扩展的网络服务Wensong Zhang
 
章文嵩:使用Lvs集群架设高可扩展的网络服务
章文嵩:使用Lvs集群架设高可扩展的网络服务章文嵩:使用Lvs集群架设高可扩展的网络服务
章文嵩:使用Lvs集群架设高可扩展的网络服务drewz lin
 

Semelhante a Memcached分析 (20)

Memcache
MemcacheMemcache
Memcache
 
Html5
Html5Html5
Html5
 
内存数据库[1]
内存数据库[1]内存数据库[1]
内存数据库[1]
 
【VM保護備份專題】Dell Power Protect Data Manager (PPDM) 詳解TSDM機制
【VM保護備份專題】Dell Power Protect Data Manager (PPDM) 詳解TSDM機制【VM保護備份專題】Dell Power Protect Data Manager (PPDM) 詳解TSDM機制
【VM保護備份專題】Dell Power Protect Data Manager (PPDM) 詳解TSDM機制
 
浅谈网站架构中缓存的应用
浅谈网站架构中缓存的应用浅谈网站架构中缓存的应用
浅谈网站架构中缓存的应用
 
浅谈网站架构中缓存的应用
浅谈网站架构中缓存的应用浅谈网站架构中缓存的应用
浅谈网站架构中缓存的应用
 
大众点评网的技术变迁之路
大众点评网的技术变迁之路大众点评网的技术变迁之路
大众点评网的技术变迁之路
 
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
 
Times Ten Training
Times Ten TrainingTimes Ten Training
Times Ten Training
 
Metrics
MetricsMetrics
Metrics
 
构建可扩展的微博系统
构建可扩展的微博系统构建可扩展的微博系统
构建可扩展的微博系统
 
Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用
 
A
AA
A
 
优酷 Web网站架构案例分析
优酷   Web网站架构案例分析优酷   Web网站架构案例分析
优酷 Web网站架构案例分析
 
Youku arch qcon2009_beijing
Youku arch qcon2009_beijingYouku arch qcon2009_beijing
Youku arch qcon2009_beijing
 
Key value store
Key value storeKey value store
Key value store
 
淘宝Java中间件之路 it168
淘宝Java中间件之路 it168淘宝Java中间件之路 it168
淘宝Java中间件之路 it168
 
LVS
LVSLVS
LVS
 
使用LVS集群架设高可扩展的网络服务
使用LVS集群架设高可扩展的网络服务使用LVS集群架设高可扩展的网络服务
使用LVS集群架设高可扩展的网络服务
 
章文嵩:使用Lvs集群架设高可扩展的网络服务
章文嵩:使用Lvs集群架设高可扩展的网络服务章文嵩:使用Lvs集群架设高可扩展的网络服务
章文嵩:使用Lvs集群架设高可扩展的网络服务
 

Memcached分析