V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xhf1024
V2EX  ›  Java

redis 里面存的 key 是 byte[]类型,怎么使用 jedis 进行 key 的模糊查询

  •  
  •   xhf1024 · 2020-05-06 17:27:33 +08:00 · 4771 次点击
    这是一个创建于 1681 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在 redis 里面存储了一些数据,key 和 value 都是 byte[]类型,现在想要使用 jedis 对 key 进行模糊查询。

    jedis 里面有 keys ( String pattern )和 keys ( byte[] pattern )两个方法,如果存的 key 是 String 类型,使用 keys(String pattern)能对 key 模糊查询,例如 a*,查找 ab 和 abc 。但是如果 key 是 byte[],使用 keys ( byte[] pattern ),查询结果是空的。请问要怎么才能把 byte[] 的 key 模糊查询出来。

    14 条回复    2020-05-07 16:17:52 +08:00
    viakiba
        1
    viakiba  
       2020-05-06 17:43:58 +08:00
    你就不能把 byte[] base64 一下吗
    xinshoushanglu
        2
    xinshoushanglu  
       2020-05-06 18:11:26 +08:00
    头像很魔性
    qwerthhusn
        3
    qwerthhusn  
       2020-05-06 20:21:24 +08:00
    一样的,数组扩充长度,最后补*,或者说是补 42
    但是可能需要对源数据进行转义,比如[]?*这些需要打斜杠,补上反斜杠 92
    qwerthhusn
        4
    qwerthhusn  
       2020-05-06 20:26:40 +08:00
    你在 redis-cli 中设置三个值:mset ab 1 ac 2 ad 3
    然后执行 keys "\x61\x2a",你会发现能返回 ab ac ad
    其实 redis 压根不区分字符串还是字节,对于 redis 来说没有字符串的概念,全是字节数组
    xhinliang
        5
    xhinliang  
       2020-05-06 20:29:36 +08:00
    在线上服务中使用 keys 不是一个好的实践。
    iffi
        6
    iffi  
       2020-05-06 20:44:12 +08:00
    哈哈哈 模糊查询 keys 有意思
    sdenvi
        7
    sdenvi  
       2020-05-06 22:01:34 +08:00
    keys 是个挺大的坑的
    kaigong
        8
    kaigong  
       2020-05-06 22:07:53 +08:00 via Android
    不要用 keys
    tairan2006
        9
    tairan2006  
       2020-05-06 22:41:05 +08:00 via Android
    老哥,方向错了
    linoder
        10
    linoder  
       2020-05-07 00:46:37 +08:00
    不要在被开除的边缘疯狂试探
    yiyi11
        11
    yiyi11  
       2020-05-07 03:10:35 +08:00 via Android
    只用 string 类型的 key,不然老麻烦了,甚至 value 也全用 string,json 化就完事了。
    不要用 jedis,用 lettuce 。
    如果是 springboot,直接用 stringRedisTemplete 。
    线上环境千万不要用 keys,最好部署阶段时把命令重命名掉。
    jugelizi
        12
    jugelizi  
       2020-05-07 08:02:20 +08:00 via iPhone
    有一天生产挂了可能就是楼主的代码干的
    gz233
        13
    gz233  
       2020-05-07 15:19:32 +08:00
    xhf1024
        14
    xhf1024  
    OP
       2020-05-07 16:17:52 +08:00
    @jugelizi 项目经理叫我这么干,太难了,说出问题了再说
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1351 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 17:16 · PVG 01:16 · LAX 09:16 · JFK 12:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.