keys wrapper that queries every shard. This is an expensive
        operation.

        This method should be invoked on a TwemRedis instance as if it
        were being invoked directly on a StrictRedis instance.

def keys(self, args):
        """
        keys wrapper that queries every shard. This is an expensive
        operation.

        This method should be invoked on a TwemRedis instance as if it
        were being invoked directly on a StrictRedis instance.
        """
        results = {}
        # TODO: parallelize
        for shard_num in range(0, self.num_shards()):
            shard = self.get_shard_by_num(shard_num)
            results[shard_num] = shard.keys(args)
        return results