首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python redis客户端zrangebylex

Python redis客户端zrangebylex
EN

Stack Overflow用户
提问于 2016-08-20 18:44:42
回答 1查看 513关注 0票数 0

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

代码语言:javascript
复制
zrangebylex names_sorted_set [a "[a\xff\xff\xff\xff"

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

代码语言:javascript
复制
    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)...我尝试了另一段代码,即

代码语言:javascript
复制
    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:

代码语言:javascript
复制
zrangebylex names_sorted_set [a "[a\\xff\\xff\\xff\\xff"

PS:代码的目的是在一个排序的集合中查找所有以特定前缀开头的字符串,例如:a。

EN

回答 1

Stack Overflow用户

发布于 2016-08-20 19:15:33

这个成功了

代码语言:javascript
复制
    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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39053223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档