'Returns a slice from the storage
:param key: the redis key at which the sorted set is located
:param start: the start
:param stop: the stop
:param filter_kwargs: a dict of filter kwargs
:param ordering_args: a list of fields used for sorting
**Example**::
get_slice_from_storage(\'feed:13\', 0, 10, {activity_id__lte=10})'

def get_slice_from_storage(self, key, start, stop, filter_kwargs=None, ordering_args=None):

    cache = self.get_cache(key)
    valid_kwargs = ['activity_id__gte', 'activity_id__lte', 'activity_id__gt', 'activity_id__lt']
    filter_kwargs = (filter_kwargs or {})
    result_kwargs = {}
    for k in valid_kwargs:
        v = filter_kwargs.pop(k, None)
        if (v is not None):
            if (not isinstance(v, (float, six.integer_types))):
                raise ValueError(('Filter    kwarg    values    should    be    floats,    int    or    long,    got    %s=%s' % (k, v)))
            (_, direction) = k.split('__')
            equal = ('te' in direction)
            if ('gt' in direction):
                if (not equal):
                    v = ('(' + str(v))
                result_kwargs['min_score'] = v
            else:
                if (not equal):
                    v = ('(' + str(v))
                result_kwargs['max_score'] = v
    if filter_kwargs:
        raise ValueError(('Unrecognized    filter    kwargs    %s' % filter_kwargs))
    if ordering_args:
        if (len(ordering_args) > 1):
            raise ValueError(('Too    many    order    kwargs    %s' % ordering_args))
        if ('-activity_id' in ordering_args):
            cache.sort_asc = False
        elif ('activity_id' in ordering_args):
            cache.sort_asc = True
        else:
            raise ValueError(('Unrecognized    order    kwargs    %s' % ordering_args))
    key_score_pairs = cache.get_results(start, stop, **result_kwargs)
    score_key_pairs = [(score, data) for (data, score) in key_score_pairs]
    return score_key_pairs
