java redis通过key模糊删除,批量删除,批量查询相关数据
程序员文章站
2022-05-31 16:38:34
...
@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisTest {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Autowired
private RedisTemplate redisTemplate;
/**
* 使用redis模糊清除缓存
*/
@Test
public void testRedisCache(){
String keys="test:";
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);
if (msg==null){
msg="没有了";
}
System.out.println("---------》移除后内容为:"+msg);
}
}
注意:删除的前缀应该是就近一级 eg: key=test:aa:bb:12345 那么他的前缀应该是test:aa:bb:* 这样才能删除
==========================
续集1
思路:使用模糊获取相关的key,然后根据key做更新删除操作
伪代码
String keys="test:group:user*";
Set<String> keysList = stringRedisTemplate.keys(keys);
keysList.forEach(i->{
String key = i;
String value=stringRedisTemplate.opsForValue().get(key);
LogUtils.info("---------->"+value+"\n");
});
拿到key了,删除更新都就迎刃而解了
续集2(更新于:2018-9-25 看到有这么多人关注我今天还是补充完善一下)
批量删除
Set<String> keysList = stringRedisTemplate.keys(keys);
stringRedisTemplate.delete(keysList);
批量查询
Set<String> keysList = stringRedisTemplate.keys(keys);
List<String> strings = stringRedisTemplate.opsForValue().multiGet(keysList);
上一篇: http_build_query 比较好用的字符串函数
下一篇: PHP代码优化的集合