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)