随笔 - 1330  文章 - 1  评论 - 378  阅读 - 482万 

早就听说memcached是一个不错的分布式内存缓存系统,做了些功课想把这memcache用到实际当中来.因为一个好的缓存系统,能给web应用带来不小的性能提升.做了一些功课之后,做了下面几点总结:

  • memcache适合与web server安装在同一server上
  • memcache可以在n个端口开n个进程,如果和web server在同一机器的话,还能减少网络开销.
  • 配置简单,启动一个进程就行了,免去了配置文件

我更关心的是,memcache的分布式应用应该如何部署.带着这个问题,我在各搜索引擎上做了进一步的功课.最初找到的办法是,首先启动n个memcache进程,这些进程可以在不同的server的不同端口上.

然后使用perl的api可以方便的一次链接多个memcache,存储读取机制不明.不久找到php的 一个MemcachedClient类,基本上就是perl里api的再实现.它使用的fscokopen或者socket系列function来直接读 取memcache—-这说明只要清楚memcache的网络协议,你甚至不用装什么php的memcache extenstion.看了这个类的实现,基本上弄清楚,它的分布式应用差不多就是将不同的key保存在不同的memcache daemon,不会保留多个副本,也就不存在多memcache同步的问题了.

过了不久俺又有发现,在最新的php手册上找到了memcache::addServer()这方法,它就是为分布式应用而产生的,有了这个支持的话,php的代码就更简单:

<?php
   $memcache_obj = new Memcache;
   $memcache_obj->addServer('memcache_host', 11211);
   $memcache_obj->addServer('failed_host', 11211);

   $stats = $memcache_obj->getExtendedStats();
   print_r($stats);
?>

看来php手册也要与时俱进啊,最好是能够直接使用英文版,否则也不会走这么多弯路了:)

官方站点

http://www.danga.com/memcached/

posted on   钱途无梁  阅读(819)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2009-03-07 petshop详解之六:PetShop之表示层设计
2009-03-07 petshop详解之五:PetShop之业务逻辑层设计
2009-03-07 petshop详解之四:PetShop之ASP.NET缓存
2009-03-07 petshop详解之三:PetShop数据访问层之消息处理
2009-03-07 petshop详解之二:PetShop数据访问层之数据库访问设计
2009-03-07 petshop详解之一:PetShop的系统架构设计
2009-03-07 Silverlight服务器部署备忘
点击右上角即可分享
微信分享提示