2016-08-20 59 views
0

我想用Redis的Python的Redis的客戶zrangebylex

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:該代碼是爲了找到一個有序集合,其與specifix前綴如啓動所有字符串:一。

回答

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)