gpt4 book ai didi

php - Predis 别名分片

转载 作者:IT王子 更新时间:2023-10-29 06:15:52 28 4
gpt4 key购买 nike

我正在尝试通过别名使用 Predis 分片,如 described here .我的代码基本相同,但我只返回空数组。我的哈希键周围需要 {} 吗? (编辑:不,只是试过了)

  $api->get("/test", function () {

$servers = [
["alias" => "metadata", "port" => 6380],
["alias" => "relations", "port" => 6381],
["alias" => "dim_provider", "port" => 6382],
["alias" => "dim_revctrcode", "port" => 6383],
["alias" => "dim_enccode", "port" => 6384],
["alias" => "dim_pos", "port" => 6385]
];

$options = [

"nodehash" => function ($connection) { return $connection->getParameters()->alias; },

"cluster" => function ($options) {
$replicas = Predis\Cluster\Distribution\HashRing::DEFAULT_REPLICAS;
$hashring = new Predis\Cluster\Distribution\HashRing($replicas, $options->nodehash);
$cluster = new Predis\Connection\PredisCluster($hashring);

return $cluster;
}
];

$redis = new Predis\Client($servers, $options);

try {
$test = $redis->scard("dim_provider");
print_r($test); // Prints 0 for scard or empty Array for hgetall
} catch (Exception $e) {
print $e->getMessage();
}

$redis = new Predis\Client(["port" => 6382]);
$test = $redis->scard("dim_provider");
print_r($test); // Works.
});

编辑:如果我只将一台服务器放在 $servers 数组中,它也可以工作。因此,散列似乎无法正常工作。当我在 nodehash 中的返回值前面抛出一些 echo 时,我可以看到它正在返回别名。

最佳答案

dim_provider alias 分配给 Redis 连接并尝试从服务器获取名为 dim_providerkey是两个不同的东西。

在您的脚本中,您尝试使用连接别名(而不是通常的 ip:port 对)设置一个 Redis 实例集群,以计算您的 key 空间在多个 Redis 服务器中的分布你的data shards .使用此设置, key dim_provider 根据底层分布算法进行分片,并且可以存储在组成集群的 6 个服务器中的任何一个上,并在 $servers 数组中定义。

关于php - Predis 别名分片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15166613/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com