Python Redis клиент Zrangebylex

Я хочу выполнить следующую команду, используя Python-клиент Redis

zrangebylex names_sorted_set [a "[a\xff\xff\xff\xff"

но в моем коде происходят следующие случаи

    name = request.GET.get('name', '')
    redis_con = redis.StrictRedis(settings.REDIS_HOST, settings.REDIS_PORT)
    min = '[' + name
    max = '[' + name + """\xff\xff"""
    result = redis_con.zrangebylex('names_sorted_set', min, max)

Выше код дает мне эту ошибку, кодек "ascii" не может декодировать байт 0xff в позиции 0: порядковый номер не в диапазоне (128)... Я попробовал другой кусок кода, который

    redis_con = redis.StrictRedis(settings.REDIS_HOST, settings.REDIS_PORT)
    min = '[' + name
    max = '[' + name + """\\xff\\xff"""
    result = redis_con.zrangebylex('names_sorted_set', min, max)

и последний дает это redis в качестве команды:

zrangebylex names_sorted_set [a "[a\\xff\\xff\\xff\\xff"

PS: код предназначен для поиска всех строк в отсортированном наборе, которые начинаются с префикса, например:a.

1 ответ

Этот работал

    name = request.GET.get('name', '')
    redis_con = redis.StrictRedis(settings.REDIS_HOST, settings.REDIS_PORT)
    min = '[' + name
    max = bytearray('[') + \
          bytearray(name, 'utf-8') + \
          b'\xff\xff\xff\xff\xff\xff\xff\xff\xff'
    result = redis_con.zrangebylex('names_sorted_set', min, max)
Другие вопросы по тегам