redis根据key前缀批量查询

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

发布了164 篇原创文章 · 获赞 38 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/corleone_4ever/article/details/104603149