redis通过key模糊删除,批量删除,批量查询相关数据

redis-redisTemplate模糊匹配删除

前几天需要一个模糊删除redis中key的功能, 没有多想,  直接

        String key = "noteUserListenedPoi:*";
            redisTemplate.delete(key);
            LOGGER.info("redis中用户收听历史被清空");

结果发现不行, 

后来测试发现模糊查询是可以用的, 找了下资料, 改成

Set<String> keys = redisTemplate.keys("noteUserListenedPoi:" + "*");
            redisTemplate.delete(keys);
            LOGGER.info("{}, redis中用户收听历史被清空"

可以用了

Redis模糊查询

可以通过Redis中keys命令进行获取key值,具体命令格式:keys pattern

文中提到redis中允许模糊查询的有3个通配符,分别是:*,?,[]

其中:

*:通配任意多个字符

?:通配单个字符

[]:通配括号内的某一个字符

public Set keys(String pattern){
  return stringRedisTemplate.keys("*" + pattern + "*");
   // return stringRedisTemplate.keys("?" + pattern);
  // return stringRedisTemplate.keys("[" + pattern + "]");
}

批量查询

Set<String> keysList = stringRedisTemplate.keys(keys);
List<String> strings = stringRedisTemplate.opsForValue().multiGet(keysList);

单个

 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);

猜你喜欢

转载自blog.csdn.net/zhuchunyan_aijia/article/details/90611016
今日推荐