public function execute()
    {
        $groups = array();
        $results = array();
        $currentOperation = null;
        $currentGroup = array();

        foreach ($this->commands as $command) {
            if ($currentOperation !== $command[0]) {
                $groups[] = array($currentOperation, $currentGroup);
                $currentOperation = $command[0];
                $currentGroup = array();
            }
            if ($currentOperation === 'get') {
                $currentGroup[] = $command[1];
            } else {
                $currentGroup[$command[1]] = $command[2];
            }
        }
        $groups[] = array($currentOperation, $currentGroup);
        array_shift($groups);

        foreach ($groups as $group) {
            list($op, $args) = $group;
            if ($op === 'set') {
                $result = $this->backend->setMulti($args, $this->ttl);
                $results = array_merge($results, array_fill(0, count($args), $result));
            } else {
                $results = array_merge($results, $this->backend->getMulti($args));
            }
        }

        $this->commands = array();
        return $results;
    }