'Retrieve results from redis using zrevrange
O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements returned.'

def get_results(self, start=None, stop=None, min_score=None, max_score=None):

    if self.sort_asc:
        redis_range_fn = self.redis.zrangebyscore
    else:
        redis_range_fn = self.redis.zrevrangebyscore
    if (stop is None):
        stop = (-1)
    if (start is None):
        start = 0
    if (stop != (-1)):
        limit = (stop - start)
    else:
        limit = (-1)
    key = self.get_key()
    if (min_score and (not isinstance(min_score, (float, str, six.integer_types)))):
        raise ValueError(('min_score    is    not    of    type    float,    int,    long    or    str    got    %s' % min_score))
    if (max_score and (not isinstance(max_score, (float, str, six.integer_types)))):
        raise ValueError(('max_score    is    not    of    type    float,    int,    long    or    str    got    %s' % max_score))
    if (min_score is None):
        min_score = '-inf'
    if (max_score is None):
        max_score = '+inf'
    results = redis_range_fn(key, start=start, num=limit, withscores=True, min=min_score, max=max_score)
    return results
