Redis 分布式存储

<?php
class RedisCluster {
    public $servers = array();

    public function addServer($host, $port) {
        $redis = new Redis();
        $redis->_connected = false;
        $redis->_host = $host;
        $redis->_port = $port;
        $this->servers[] = $redis;
    }

    public function __call($method, $args) {
        if (!method_exists("Redis", $method)) {
            throw new Execption("not method");
        }
        $redis = $this->servers[abs(crc32($args[0])) % count($this->servers)];
        if (!$redis->_connected) {
            $redis->connect($redis->_host, $redis->_port);
            $redis->_connected = true;
        }
        // return $redis->$method(...$args); // PHP 5.6
        return call_user_func_array([$redis, $method], $args);
    }
}

$rc = new RedisCluster();
$rc->addServer("127.0.0.1", 8000);
$rc->addServer("127.0.0.1", 8001);

$rc->set("a", 1);
$rc->set("b", 2);
$rc->set("c", 3);
$rc->set("d", 4);
$rc->set("e", 5);

可参考:https://www.jianshu.com/p/2e8d090480a7

本作品采用《CC 协议》,转载必须注明作者和本文链接
打不死的小强
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!