protected function getShards(array $keys)
{
$shards = new SplObjectStorage();
foreach ($keys as $key) {
$shard = $this->getShard($key);
if (!isset($shards[$shard])) {
$shards[$shard] = array();
}
$shards[$shard] = array_merge($shards[$shard], array($key));
}
return $shards;
}