Python Redis клиент Zrangebylex

python redis sortedset

330 просмотра

1 ответ

Я хочу выполнить следующую команду, используя 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.

Автор: Pedram Esmaeeli Источник Размещён: 08.11.2019 11:11

Ответы (1)


0 плюса

этот работал

    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)
Автор: Pedram Esmaeeli Размещён: 20.08.2016 11:15
Вопросы из категории :
32x32