在项目开发中实现Redis数据分类存储 在项目开发中,数据管理总会遇到分类存储的需求——比如按模块、按业务类型给Redis里的数据分个组。这种场景下,使用命名空间(namespace)来辅助管理会方便很多,例如通过Spring Cache的@Cacheable中的value参数,就能轻松实现分组。
在项目开发中,数据管理总会遇到分类存储的需求——比如按模块、按业务类型给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),直接在里面按前缀匹配删除也是一种更直观的方式,操作起来跟上面几个截图展示的差不多。


两种方式各有用处:代码级删除适合集成到业务逻辑里自动化执行,客户端操作则适合临时排查或手动清理。核心都是利用命名空间的前缀来做批量匹配,非常实用。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述