Return a range of values from sorted set name between
            @start and @end sorted in ascending order unless @reverse or
            :prop:reversed.

            @start and @end: #int, can be negative, indicating the end of
                the range.
            @withscores: #bool indicates to return the scores along with the
                members, as a list of |(member, score)| pairs
            @reverse: #bool indicating whether to sort the results descendingly

            -> yields members or |(member, score)| #tuple pairs

def iter(self, start=0, stop=-1, withscores=False, reverse=None):
        """ Return a range of values from sorted set name between
            @start and @end sorted in ascending order unless @reverse or
            :prop:reversed.

            @start and @end: #int, can be negative, indicating the end of
                the range.
            @withscores: #bool indicates to return the scores along with the
                members, as a list of |(member, score)| pairs
            @reverse: #bool indicating whether to sort the results descendingly

            -> yields members or |(member, score)| #tuple pairs
        """
        reverse = reverse if reverse is not None else self.reversed
        _loads = self._loads
        for member in self._client.zrange(
           self.key_prefix, start=start, end=stop, withscores=withscores,
           desc=reverse, score_cast_func=self.cast):
            if withscores:
                yield (_loads(member[0]), self.cast(member[1]))
            else:
                yield _loads(member)