在实际项目开发中,数据管理常需要按模块或业务类型对Redis数据进行分类存储。此时,借助命名空间(namespace)进行管理会非常便捷。例如,通过Spring Cache的@Cacheable注解中的value参数,即可轻松实现数据分组。
举个具体例子:
@Cacheable(value = "config", key = "#comparamid+'_'+#comCode") @Query(value = "select * from test where comparamid=?1 and configcomcode=?2", nativeQuery = true) public ListfindByCondition(long comparamid, String comCode);
配置完成后,Redis中的数据将按照config::前缀进行分组存储,效果如下图所示:

引入命名空间后,批量获取数据时也必须包含此前缀,否则将按完整key进行匹配:

那么在Java后台需要批量删除某个命名空间下的所有数据时,该如何实现?其实非常简单——通过RedisTemplate的keys方法结合通配符模式匹配,再调用批量删除操作即可。以下是一段示例代码:
@Autowired private RedisTemplateredisTemplate; @RequestMapping(value = "/deal", method = RequestMethod.GET) public Long delByPrefix(final String prefixKey){ // 删除config::4开头的所有redis数据 Set keys = redisTemplate.keys("config::4*"); if(!CollectionUtils.isEmpty(keys)) { return redisTemplate.delete(keys); } return "SUCESS"; }
另外,如果你拥有Redis客户端(如Redis Desktop Manager),直接在客户端中按前缀匹配删除也是一种更直观的方法,操作方式与上面截图展示的类似。


两种方式各有优势:代码级删除适合集成到业务逻辑中实现自动化,而客户端操作则便于临时排查或手动清理。其核心原理都是利用命名空间的前缀进行批量匹配,非常实用。
