Memcached简介

1,374 views

Published on

A very simple introduction to Memcached in Chinese!

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,374
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Memcached简介

  1. 1. Memcached简介 梁智超 frankey0207@gmail.com
  2. 2. Memcached是什么?• Memcached是以LiveJournal旗下Danga Interactive公 司的Bard Fitzpatric为首开发的高性能分布式内存 缓存服务器。• Memcached本质上就是一个内 存Key-Value数据库,但是不支持数据的持久化, 服务器关闭之后数据全部丢失。• Memcached使用广泛,除了LiveJournal以外还有 Wikipedia/Flickr/Twitter/Youtube/WordPress等。• Memcached的客户端软件实现也非常多,包括 C/C++, PHP, Java, Python, Ruby, Perl, Erlang, Lua等。 http://code.google.com/p/memcached/wiki/Clients
  3. 3. 为什么有Memcached?• Web应用将数据存储在数据库服务器的RDBMS中, 应用服务器在接到数据访问请求后,从数据库服 务器读取数据并传回给浏览器。• 但随着数据量以及并发访问量 的增大,就会出现很多问题: - 网络负载加重 - 数据库响应恶化 - 网站显示延迟
  4. 4. 如何使用Memcached?• Memcached缓存数据库查询结果,减少数据库访 问次数,以提高动态Web应用的速度和可扩张性。 浏览器 首次访问,从 RDBMS读数据 到Memcached 应用服务器 第二次后,从 Memcached读 数据RDBMS Memcached Memcached RDBMS Memcached Memcached
  5. 5. Memcached的安装和访问• Windows下安装Memcached: - http://code.jellycan.com/memcached/ - 在命令行窗口下执行:memcached.exe –d install• 启动Memcached服务: - memcached.exe –d start –l localhost –p 11211 –m 128• 使用Telnet访问Memcached服务: - telnet localhost 11211 set <key> <flags> <exptime> - set username 0 0 8 <bytes> [noreply]rn<value>rn lzhichao gets <key>*rn - get username
  6. 6. Memcached的内部实现• Memcached设计与实现的重点就是高性能,因为 为了加快数据的查询,Memcached使用Hash表来 管理所有的Key-Value Pair。 Key 1 Item 1_ptr• Memcached使用Slab Allocation 机制加快内存的分配和回收。 Key 2 Item 2_ptr … … Key n-1 Item n-1_ptr Key n Item n_ptr
  7. 7. Memcached的分布式• Memcached本身不支持集群功能,所以只能通过 客户端来实现Memcached的分布式集群。 Node 1 Node 2 Node 3 Memcached Node 1 X 算法 Node 2 Node 3 客户端程序库 Set(“tokyo”, data) 应用程序 Get(“tokyo”)
  8. 8. Memcached分布式算法• 最简单的分布式算法就是除留余数法: - Memcached服务器3台 - Key的哈希函数为平方取中法(中间一或两位)• 客户端请求:Set(193, “Hello, world!”) - Hash(key) = 6, (193 * 193 = 35721) - Memcached节点号 = 0, (2 % 3 = 2) Node 0 Node 1 Node 2 一旦某个节点 Set(193, “Hello, world”) 挂了。。。 应用程序
  9. 9. Memcached分布式算法(cont.)• 最流行的分布式算法就是一致性哈希:将数据的 Key 和Memcached节点都映射到环上,将数据存 储到顺时针查到的第一个节点上。

×