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

2020-05-06 17:27:33 +08:00
 xhf1024

在 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 模糊查询出来。

4742 次点击
所在节点    Java
14 条回复
viakiba
2020-05-06 17:43:58 +08:00
你就不能把 byte[] base64 一下吗
xinshoushanglu
2020-05-06 18:11:26 +08:00
头像很魔性
qwerthhusn
2020-05-06 20:21:24 +08:00
一样的,数组扩充长度,最后补*,或者说是补 42
但是可能需要对源数据进行转义,比如[]?*这些需要打斜杠,补上反斜杠 92
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
2020-05-06 20:29:36 +08:00
在线上服务中使用 keys 不是一个好的实践。
iffi
2020-05-06 20:44:12 +08:00
哈哈哈 模糊查询 keys 有意思
sdenvi
2020-05-06 22:01:34 +08:00
keys 是个挺大的坑的
kaigong
2020-05-06 22:07:53 +08:00
不要用 keys
tairan2006
2020-05-06 22:41:05 +08:00
老哥,方向错了
linoder
2020-05-07 00:46:37 +08:00
不要在被开除的边缘疯狂试探
yiyi11
2020-05-07 03:10:35 +08:00
只用 string 类型的 key,不然老麻烦了,甚至 value 也全用 string,json 化就完事了。
不要用 jedis,用 lettuce 。
如果是 springboot,直接用 stringRedisTemplete 。
线上环境千万不要用 keys,最好部署阶段时把命令重命名掉。
jugelizi
2020-05-07 08:02:20 +08:00
有一天生产挂了可能就是楼主的代码干的
gz233
2020-05-07 15:19:32 +08:00
xhf1024
2020-05-07 16:17:52 +08:00
@jugelizi 项目经理叫我这么干,太难了,说出问题了再说

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/669006

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX