zoukankan      html  css  js  c++  java
  • memcache通过hash取模算法,实现多服务器存取值

    <?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');
    通往牛逼的路上,在意的只有远方!
  • 相关阅读:
    Winfroms检测组合键
    深入理解MySQL索引
    Java并发复习笔记
    并发编程三大特性——原子性、可见性、有序性
    redis修改密码
    windows server2016远程桌面设置
    Windows Server 2016离线安装.NET Framework 3.5
    common-io文件io流工具
    树莓派3b配置
    IOT 开源物联网平台
  • 原文地址:https://www.cnblogs.com/jiangshiguo/p/9826138.html
Copyright © 2011-2022 走看看