Redis批量删除namespace下的数据实现

作者:技术拾光

时间:2026-07-07

浏览:255

在项目开发中实现Redis数据分类存储 在项目开发中,数据管理总会遇到分类存储的需求——比如按模块、按业务类型给Redis里的数据分个组。这种场景下,使用命名空间(namespace)来辅助管理会方便很多,例如通过Spring Cache的@Cacheable中的value参数,就能轻松实现分组。

文章目录

在项目开发中实现Redis数据分类存储

在项目开发中,数据管理总会遇到分类存储的需求——比如按模块、按业务类型给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 List findByCondition(long comparamid, String comCode);

这样设置后,Redis中的数据会按config::前缀进行分组存储,如下图所示:

Redis批量删除namespace下的数据实现

既然添加了命名空间,批量获取数据时也需要带上此前缀,否则就是按完整key匹配了:

Redis批量删除namespace下的数据实现

在Java后台批量删除命名空间下的数据

那么在Java后台需要批量删除某个命名空间下的所有数据时,该怎么写?其实很简单——通过RedisTemplate的keys方法加上通配符模式匹配,再调用批量删除即可。下面是一段示例:

@Autowired
private RedisTemplate redisTemplate;

@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),直接在里面按前缀匹配删除也是一种更直观的方式,操作起来跟上面几个截图展示的差不多。

Redis批量删除namespace下的数据实现

Redis批量删除namespace下的数据实现

两种删除方式对比

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

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章