mamche

简介:

                        Mamche

memcached 是以 LiveJournal 旗下 Danga Interactive 公司的 Brad Fitzpatric 为首开发的一款软件。现在已成为 mixiFacebookLiveJournal 等众多服务中提高 Web 应用扩展性的重要因素。许多 Web 应用都将数据保存到 RDBMS ,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,就会出现 RDBMS 的负担加重、数据库响应恶化、网站显示延迟等重大影响。这时就该memcached 大显身手了。memcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态 Web 应用的速度、提高可扩展性。



memcached 作为高速运行的分布式缓存服务器,具有以下的特点。

协议简单

基于 libevent 的事件处理

内置内存存储方式

memcached 不互相通信的分布式



协议简单

memcached 的服务器客户端通信并不使用复杂的 XML 等格式,而使用简单的基于文本行的协议。因此,通过 telnet 也能在 memcached 上保存数据、取得数据。


基于 libevent 的事件处理

libevent 是个程序库,它将 Linux  epollBSD 类操作系统的 kqueue 等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥 O(1)的性能。memcached 使用这个 libevent ,因此能在 LinuxBSDSolaris 等操作系统上发挥其高性能。


内置内存存储方式

为了提高性能,memcached中保存的数据都存储在memcached 内置的内存存储空间中。由于数据仅存在于内存中,因此重启 memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于 LRU(Least Recently Used)算法自动删除不使用的缓存。memcached 本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。memcached 内部不会监视记录是否过期,而是在 get 时查看记录的时间戳,检查记录是否过期。这种技术被称为 lazy(惰性)expiration。因此,memcached 不会在过期监视上耗费 CPU 时间。memcached 会优先使用已超时的记录的空间,但即使如此,也会发生追加新记录时空间不足的情况,此时就要使用名为 LeastRecently Used(LRU)机制来分配空间。顾名思义,这是删除“最近最少使用”的记录的机制。因此, memcached 的内存空间不足时就从最近未被使用的记录中搜索,并将其空间分配给新的记录。从缓存的实用角度来看,该模型十分理想。


memcached 不互相通信的分布式

memcached 尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个 memcached 不会互相通信以共享信息。那么,怎样进行分布式呢?这完全取决于客户端的实现。





部署 Memcached

============================================================

[root@localhost tmp]# tar xflibevent-2.0.15-stable.tar.gz

[root@localhost tmp]# cdlibevent-2.0.15-stable

[root@localhost libevent-2.0.15-stable]#./configure && make && make install

[root@localhost tmp]# tar xfmemcached-1.4.5.tar.gz

[root@localhost tmp]# cd memcached-1.4.5

[root@localhost memcached-1.4.5]#./configure && make && make install

[root@localhost memcached-1.4.5]#./memcached  -h


开启memcached监听

[root@localhost memcached-1.4.5]#./memcached -p 11211 -l 192.168.122.10 -u root -m 64 -c 10 -vvv


新建一个窗口使用telnet  Memcached 发起连接

[root@node1 ~]# telnet 192.168.122.10 11211

Trying 192.168.122.10...

Connected to 192.168.122.10 (192.168.122.10).

Escape character is '^]'.



返回开启memcached 监听的终端可看到连接提示

<27 server listening (udp)

<27 server listening (udp)

<27 server listening (udp)

<27 server listening (udp)

<28 new auto-negotiating clientconnection



telnet终端,连接测试set 存数据,get 取数据

[root@node1 ~]# telnet 192.168.122.10 11211

Trying 192.168.122.10...

Connected to 192.168.122.10(192.168.122.10).

Escape character is '^]'.

set nothing 0 180 10      ----- 0:标识 180:过期时间 10:多少字节

1234567890

STORED

get nothing

VALUE nothing 0 10

1234567890

END






使用测试的 PHP 网页,通过 PHP 连接 Memcached

=========================================================

[root@node1 ~]# yum install httpd php

[root@node1 ~]# rpm -ivhphp-pecl-memcache-2.1.2-1.el5.rf.i386.rpm

[root@node1 ~]# cp memcached.php/var/www/html/

[root@node1 ~]# vim/var/www/html/memcached.php

<?php

$memcache = new Memcache;

$memcache->connect('192.168.122.10',11211) or die ("Could notconnect");

$version = $memcache->getVersion();

echo "Server's version:".$version."<br/>\n";


$tmp_object = new stdClass;

$tmp_object->str_attr = 'test';

$tmp_object->int_attr = 123;


$memcache->set('key', $tmp_object,false, 10) or die ("Failed to save data at the server");

echo "Store data in the cache (datawill expire in 10 seconds)<br/>\n";

$get_result = $memcache->get('key');

echo "Data from thecache:<br/>\n";


var_dump($get_result);

?>



[root@node1 ~]# service httpd start



测试:

[root@localhost ~]# elinks --dumphttp://192.168.122.10/test.php

Server's version: 1.4.5

Store data in the cache (data will expirein 10 seconds)

Data from the cache:

object(stdClass)#3 (2) {["str_attr"]=> string(4) "test"["int_attr"]=> int(123) }




      本文转自潘阔 51CTO博客,原文链接:http://blog.51cto.com/pankuo/1392491,如需转载请自行联系原作者





相关文章
|
4天前
|
弹性计算 安全 API
访问控制(RAM)|云上安全使用AccessKey的最佳实践
集中管控AK/SK的生命周期,可以极大降低AK/SK管理和使用成本,同时通过加密和轮转的方式,保证AK/SK的安全使用,本次分享为您介绍产品原理,以及具体的使用步骤。
101783 0
|
4天前
|
SQL 关系型数据库 分布式数据库
Doodle Jump — 使用Flutter&Flame开发游戏真不错!
用Flutter&Flame开发游戏是一种什么体验?最近网上冲浪的时候,我偶然发现了一个国外的游戏网站,类似于国内的4399。在浏览时,我遇到了一款经典的小游戏:Doodle Jump...
|
12天前
|
弹性计算 运维 安全
访问控制(RAM)|云上程序使用临时凭证的最佳实践
STS临时访问凭证是阿里云提供的一种临时访问权限管理服务,通过STS获取可以自定义时效和访问权限的临时身份凭证,减少长期访问密钥(AccessKey)泄露的风险。本文将为您介绍产品原理,以及具体的使用步骤。
151033 4
|
10天前
|
数据采集 存储 运维
提升团队工程交付能力,从“看见”工程活动和研发模式开始
本文从统一工程交付的概念模型开始,介绍了如何将应用交付的模式显式地定义出来,并通过工具平台落地。
119990 57
|
11天前
|
监控 负载均衡 Java
深入探究Java微服务架构:Spring Cloud概论
**摘要:** 本文深入探讨了Java微服务架构中的Spring Cloud,解释了微服务架构如何解决传统单体架构的局限性,如松耦合、独立部署、可伸缩性和容错性。Spring Cloud作为一个基于Spring Boot的开源框架,提供了服务注册与发现、负载均衡、断路器、配置中心、API网关等组件,简化了微服务的开发、部署和管理。文章详细介绍了Spring Cloud的核心模块,如Eureka、Ribbon、Hystrix、Config、Zuul和Sleuth,并通过一个电商微服务系统的实战案例展示了如何使用Spring Cloud构建微服务应用。
103502 8
|
12天前
|
人工智能 Serverless 对象存储
让你的文档从静态展示到一键部署可操作验证
通过函数计算的能力让阿里云的文档从静态展示升级为动态可操作验证,用户在文档中单击一键部署可快速完成代码的部署及测试。这一改变已在函数计算的活动沙龙中得到用户的认可。
120839 218
|
11天前
|
SQL 存储 数据可视化
Ganos H3地理网格能力解析与最佳实践
本文介绍了Ganos H3的相关功能,帮助读者快速了解Ganos地理网格的重要特性与应用实践。H3是Uber研发的一种覆盖全球表面的二维地理网格,采用了一种全球统一的、多层次的六边形网格体系来表示地球表面,这种地理网格技术在诸多业务场景中得到广泛应用。Ganos不仅提供了H3网格的全套功能,还支持与其它Ganos时空数据类型进行跨模联合分析,极大程度提升了客户对于时空数据的挖掘分析能力。
|
11天前
|
存储 缓存 安全
深度解析JVM世界:JVM内存结构
深度解析JVM世界:JVM内存结构
|
18天前
|
人工智能 编解码 对象存储
一键生成视频!用 PAI-EAS 部署 AI 视频生成模型 SVD 工作流
本教程将带领大家免费领取阿里云PAI-EAS的免费试用资源,并且带领大家在 ComfyUI 环境下使用 SVD的模型,根据任何图片生成一个小短视频。