* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Predis\Command\Hash; use Predis\Command\CommandInterface; use Predis\Distribution\HashGeneratorInterface; /** * Interface for classes defining the strategy used to calculate an hash * out of keys extracted from supported commands. * * This is mostly useful to support clustering via client-side sharding. * * @author Daniele Alessandri */ interface CommandHashStrategyInterface { /** * Returns the hash for the given command using the specified algorithm, or null * if the command cannot be hashed. * * @param HashGeneratorInterface $hasher Hash algorithm. * @param CommandInterface $command Command to be hashed. * @return int */ public function getHash(HashGeneratorInterface $hasher, CommandInterface $command); /** * Returns the hash for the given key using the specified algorithm. * * @param HashGeneratorInterface $hasher Hash algorithm. * @param string $key Key to be hashed. * @return string */ public function getKeyHash(HashGeneratorInterface $hasher, $key); }