mirror of
https://github.com/predis/predis.git
synced 2026-08-25 15:19:35 +00:00
09de7be7cb
This is mainly in response to the longstanding issue #36 in which my proposed solution was fine in terms of functionalities, but eventually never made into the repository since it was far from being clean enough for my taste. Now developers can optionally pass a callable object when creating the hashring instance to decide how the distributor should extract the hash from a node (really a connection instance) to populate the ring: use Predis\Cluster\Distribution\HashRing; use Predis\Connection\PredisCluster; $servers = array( 'tcp://10.0.0.1?alias=node01', 'tcp://10.0.0.2?alias=node02', ); $options = array( 'nodehash' => function ($connection) { return $connection->getParameters()->alias; }, 'cluster' => function ($options) { $replicas = HashRing::DEFAULT_REPLICAS; $hashring = new HashRing($replicas, $options->nodehash); $cluster = new PredisCluster($hashring); return $cluster; }, ); $client = new Predis\Client($servers, $options); Both HashRing and KetamaPureRing in the Predis\Cluster\Distribution namespace support this new approach.