Python redis client zrangebylex



我想使用redis的python客户端执行以下命令

zrangebylex names_sorted_set [a "[axffxffxffxff"

但是在我的代码中发生了以下情况

    name = request.GET.get('name', '')
    redis_con = redis.StrictRedis(settings.REDIS_HOST, settings.REDIS_PORT)
    min = '[' + name
    max = '[' + name + """xffxff"""
    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.

这个成功了

    name = request.GET.get('name', '')
    redis_con = redis.StrictRedis(settings.REDIS_HOST, settings.REDIS_PORT)
    min = '[' + name
    max = bytearray('[') + 
          bytearray(name, 'utf-8') + 
          b'xffxffxffxffxffxffxffxffxff'
    result = redis_con.zrangebylex('names_sorted_set', min, max)

最新更新