
在 redis 里面存储了一些数据,key 和 value 都是 byte[]类型,现在想要使用 jedis 对 key 进行模糊查询。
jedis 里面有 keys ( String pattern )和 keys ( byte[] pattern )两个方法,如果存的 key 是 Strig 类型,使用 keys(String pattern)能对 key 模糊查询,例如 a*,查找 ab 和 abc 。但是如果 key 是 byte[],使用 keys ( byte[] pattern ),查询结果是空的。请问要怎么才能把 byte[] 的 key 模糊查询出来。
1 viakiba 2020 年 5 月 6 日 你就不能把 byte[] base64 一下吗 |
2 xinshoushanglu 2020 年 5 月 6 日 头像很魔性 |
3 qwerthhusn 2020 年 5 月 6 日 一样的,数组扩充长度,最后补*,或者说是补 42 但是可能需要对源数据进行转义,比如[]?*这些需要打斜杠,补上反斜杠 92 |
4 qwerthhusn 2020 年 5 月 6 日 你在 redis-cli 中设置三个值:mset ab 1 ac 2 ad 3 然后执行 keys "\x61\x2a",你会发现能返回 ab ac ad 其实 redis 压根不区分字符串还是字节,对于 redis 来说没有字符串的概念,全是字节数组 |
5 xhinliang 2020 年 5 月 6 日 在线上服务中使用 keys 不是一个好的实践。 |
6 iffi 2020 年 5 月 6 日 哈哈哈 模糊查询 keys 有意思 |
7 sdenvi 2020 年 5 月 6 日 keys 是个挺大的坑的 |
8 kaigong 2020 年 5 月 6 日 via Android 不要用 keys |
9 tairan2006 2020 年 5 月 6 日 via Android 老哥,方向错了 |
10 linoder 2020 年 5 月 7 日 不要在被开除的边缘疯狂试探 |
11 yiyi11 2020 年 5 月 7 日 via Android 只用 string 类型的 key,不然老麻烦了,甚至 value 也全用 string,json 化就完事了。 不要用 jedis,用 lettuce 。 如果是 springboot,直接用 stringRedisTemplete 。 线上环境千万不要用 keys,最好部署阶段时把命令重命名掉。 |
12 jugelizi 2020 年 5 月 7 日 via iPhone 有一天生产挂了可能就是楼主的代码干的 |
13 gz233 2020 年 5 月 7 日 |