redis没有直接通过通配符批量查询kv的
但是我们可以通过通配符获得k,在由k获得v
比如有这些k,格式是 企业_车牌_颜色
我们要获取测试公司的所有车辆的v
可以keys 测试公司_*
获得所有key之后
在用mget获取所有key的v
java代码如下:
/**
* 前缀匹配keys
* @param key
* @return
*/
public static String[] keysPre(String key){
Jedis jedis = RedisPoolUtil.getInstance();
Set<byte[]> keys = jedis.keys((key+"_*").getBytes());
Set<String> keystr = new HashSet<>();
for (byte[] bytes : keys) {
keystr.add(new String(bytes));
}
Object[] objects = keystr.toArray();
String[] objecta = (String[])keystr.toArray();
String str[]= Arrays.copyOf(objects, objects.length, String[].class);
RedisPoolUtil.closeConn();
return str;
}
/**
* 批量查询key的值
* @param key
* @return
*/
public static String mget(String... key){
Jedis jedis = RedisPoolUtil.getInstance();
List<String> mget = jedis.mget(key);
RedisPoolUtil.closeConn();
return mget.toString();
}
查询代码:
String[] strings = RedisOps.keysPre("测试公司");
String s = RedisOps.mget(strings);
我封装的jedis工具可以看下:https://blog.csdn.net/corleone_4ever/article/details/84582394