簡體   English   中英

Python Redis客戶端zrangebylex

[英]Python redis client zrangebylex

我想使用Redis的python客戶端執行以下命令

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:序數不在range(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'\xff\xff\xff\xff\xff\xff\xff\xff\xff'
    result = redis_con.zrangebylex('names_sorted_set', min, max)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM