xhf1024
V2EX  ›  Java

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

  •  
  •   xhf1024 · May 6, 2020 · 6235 views
    This topic created in 2380 days ago, the information mentioned may be changed or developed.

    在 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 replies  •  2020-05-07 16:17:52 +08:00
    viakiba
    viakiba
    May 6, 2020
    1
    你就不能把 byte[] base64 一下吗
    xinshoushanglu
    xinshoushanglu
    May 6, 2020
    2
    头像很魔性
    qwerthhusn
    qwerthhusn
    May 6, 2020
    3
    一样的,数组扩充长度,最后补*,或者说是补 42
    但是可能需要对源数据进行转义,比如[]?*这些需要打斜杠,补上反斜杠 92
    qwerthhusn
    qwerthhusn
    May 6, 2020
    4
    你在 redis-cli 中设置三个值:mset ab 1 ac 2 ad 3
    然后执行 keys "\x61\x2a",你会发现能返回 ab ac ad
    其实 redis 压根不区分字符串还是字节,对于 redis 来说没有字符串的概念,全是字节数组
    xhinliang
    xhinliang
    May 6, 2020
    5
    在线上服务中使用 keys 不是一个好的实践。
    iffi
    iffi
    May 6, 2020
    6
    哈哈哈 模糊查询 keys 有意思
    sdenvi
    sdenvi
    May 6, 2020
    7
    keys 是个挺大的坑的
    kaigong
    kaigong
    May 6, 2020 via Android
    8
    不要用 keys
    keenkiller
    keenkiller
    May 6, 2020 via Android
    9
    老哥,方向错了
    linoder
    linoder
    May 7, 2020
    10
    不要在被开除的边缘疯狂试探
    yiyi11
    yiyi11
    May 7, 2020 via Android
    11
    只用 string 类型的 key,不然老麻烦了,甚至 value 也全用 string,json 化就完事了。
    不要用 jedis,用 lettuce 。
    如果是 springboot,直接用 stringRedisTemplete 。
    线上环境千万不要用 keys,最好部署阶段时把命令重命名掉。
    jugelizi
    jugelizi
    May 7, 2020 via iPhone
    12
    有一天生产挂了可能就是楼主的代码干的
    xhf1024
    xhf1024
    OP
    May 7, 2020
    14
    @jugelizi 项目经理叫我这么干,太难了,说出问题了再说
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4108 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 71ms · UTC 09:30 · PVG 17:30 · LAX 01:30 · JFK 04:30
    ♥ Do have faith in what you're doing.