<?php //封装一个hash算法类 class Mem{ //存储memcache的服务器个数 private $hostCount=''; //多个服务器 private $host=[]; //构造方法用来给接收值,给属性赋值 public function __construct($hostServer) { $this->hostCount = count($hostServer); $this->host = $hostServer; } //计算key的位置,返回的是当前是第几台服务器 public function position($key){ echo sprintf('%u',crc32($key))%$this->hostCount;//取余数 return sprintf('%u',crc32($key))%$this->hostCount; } //根据取到的位置获取当前memcache对象,链接memcache public function getMemObj($position){ //在服务器池中获取某一台的地址和端口号 $host=$this->host[$position]['host']; $port=$this->host[$position]['port']; $MemObj = new Memcache(); $MemObj->addServer($host,$port); return $MemObj; } //设置值 public function SetData($key,$value){ //找到服务器位置 $num = $this->position($key); //连接服务器 $m = $this->getMemObj($num); return $m->set($key,$value); } public function GetData($key){ //找到服务器位置 $num = $this->position($key); //连接服务器 $m = $this->getMemObj($num); return $m->get($key); } } $host = [ [ 'host'=>'127.0.0.1', 'port'=>'11211' ], [ 'host'=>'127.0.0.2', 'port'=>'11212' ] ]; $obj = new Mem($host); $obj->position('sex');