Python redis客户端zrangebylex

时间:2016-08-20 10:44:42

标签: python redis sortedset

我想使用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'编解码器不能解码位置0中的字节0xff:序数不在范围内(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 个答案:

答案 0 :(得分: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)