首页 > 数据库 >Redis批量删除namespace下的数据实现

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

来源:互联网 2026-07-07 09:12:11

在项目开发中实现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下的数据实现

两种删除方式对比

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

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备2026025700号-3 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。