redis-redisTemplate模糊匹配删除
前几天需要一个模糊删除redis中key的功能, 没有多想, 直接
String key = "noteUserListenedPoi:*"; redisTemplate.delete(key); LOGGER.info("redis中用户收听历史被清空");
结果发现不行,
后来测试发现模糊查询是可以用的, 找了下资料, 改成
Set<String> keys = redisTemplate.keys("noteUserListenedPoi:" + "*"); redisTemplate.delete(keys); LOGGER.info("{}, redis中用户收听历史被清空"
可以用了
Redis模糊查询
可以通过Redis中keys命令进行获取key值,具体命令格式:keys pattern
文中提到redis中允许模糊查询的有3个通配符,分别是:*,?,[]
其中:
*
:通配任意多个字符
?
:通配单个字符
[]
:通配括号内的某一个字符
public Set keys(String pattern){
return stringRedisTemplate.keys("*" + pattern + "*");
// return stringRedisTemplate.keys("?" + pattern);
// return stringRedisTemplate.keys("[" + pattern + "]");
}
批量查询
Set<String> keysList = stringRedisTemplate.keys(keys);
List<String> strings = stringRedisTemplate.opsForValue().multiGet(keysList);
单个
redisTemplate.opsForValue().set(keys+1,"this is a test content!",1000,TimeUnit.SECONDS);
String content=redisTemplate.opsForValue().get(keys+1).toString();
System.out.println("---------》获取到缓存的内容为:"+content);
redisTemplate.delete(redisTemplate.keys(keys+"*"));
Object msg=redisTemplate.opsForValue().get(keys+1);