姓名:穆培婷
学号:17101223414
专业:软件工程
本文转载自:https://baike.baidu.com/item/memcached/1625373?fr=aladdin
【嵌牛导读】:Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。
【嵌牛鼻子】:缓存 负载均衡 分布式
【嵌牛正文】:
1、memcached基本概念
Memcached是danga的一个项目,最早是LiveJournal 服务的,最初为了加速 LiveJournal 访问速度而开发的,后来被很多大型的网站采用。 官方网站: www.danga.com 和 memcached.org
Memcached是一个高性能的分布式的内存对象缓存系统,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。
LiveJournal :国外的sns社交网站,网站的访问量很大的时候,就不行了,后来成立了一个社区专门解决访问量大的问题,即memcache.
danga:www.danga.com
总体介绍:
memcached是一种缓存技术, 他可以把你的数据放入内存,从而通过内存访问提速,因为内存最快的, memcached技术的主要目的提速,
(先访问数据库--增加固态后--访问页面(磁盘)---访问内存)
2、使用memcached给我们带来的好处?
流程:在浏览器提交学生id,将速度做到极致,第一种方法:比较传统的直接查数据库。第二种方法:使用真静态,在查询学生成绩的时候,不仅有数据库还有学生成绩页面,当浏览器访问的时候,直接访问学生成绩页面,将结果返回。第三种方法:将学生信息存入数据库的同时将数据放入内存,当另一个人访问的时候,先去内存中找,内存中有直接读出即可。第四种方法:寄存器(很贵)
三种方案的比较
1. 数据库 2. 页面静态化 3. memcached 缓存技术
3、特征
memcached作为高速运行的分布式缓存服务器,具有以下的特点。
· 协议简单
· 基于libevent的事件处理
· 内置内存存储方式
· memcached不互相通信的分布式
4、协议
memcached的服务器客户端通信并不使用复杂的XML等格式,而使用简单的基于文本行的协议。
因此,通过telnet也能在memcached上保存数据、取得数据。下面是例子。
$ telnet localhost 11211
Trying 127.0.0.1
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
set foo 0 0 3 (保存命令)
bar (数据)
STORED (结果)
get foo (取得命令)
VALUE foo 0 3 (数据)
bar (数据)
5、事件处理
libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能。memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。关于事件处理这里就不再详细介绍,可以参考Dan Kegel的The C10K Problem。
6、存储方式
为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。
7、通信分布式
memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息。那么,怎样进行分布式呢?这完全取决于客户端的实现。本文也将介绍memcached的分布式。
8、功能
一个用PHP编写的可视化的MemCached管理系统
MemAdmin是一款可视化的Memcached管理与监控工具,使用PHP开发,体积小,操作简单。
主要功能:
服务器参数监控:STATS、SETTINGS、ITEMS、SLABS、SIZES实时刷新
服务器性能监控:GET、DELETE、INCR、DECR、CAS等常用操作命中率实时监控
支持数据遍历,方便对存储内容进行监视
支持条件查询,筛选出满足条件的KEY或VALUE
兼容memcache协议的其他服务,如Tokyo Tyrant (遍历功能除外)
9、memcached连接
我们可以通过 telnet 命令并指定主机ip和端口来连接 Memcached 服务。
语法
命令中的HOST和PORT为运行 Memcached 服务的 IP 和 端口。
实例
以下实例演示了如何连接到 Memcached 服务并执行简单的 set 和 get 命令。
本实例的 Memcached 服务运行的主机为 127.0.0.1(本机) 、端口为 11211。