redis keys*xx*替代方案

有个同事想实现获取以某个字符开头的key的数量,使用了keys *命令,造成经常连接不到redis。

其实获取key的数量,命令行可以用exists命令,如果是springboot,可以使用countExistingKeys方法,如果要查询的key过多,可以分批次获取。

如下为测试,测试数据很少,所以命令行直接用keys *查询数据了,目前有如下数据

命令行

 

 在命令行查询存在的key

 

 SpringBoot

@Component
public class RedisKeyCount implements CommandLineRunner{

    private Logger logger = LoggerFactory.getLogger(RedisKeyCount.class);
    @Autowired
    private StringRedisTemplate  redisTemplate;
    
    @Override
    public void run(String... args) throws Exception {
        
        List<String> list = new ArrayList<String>();
        list.add("test_aa");
        list.add("test_bb");
        list.add("test_cc");
        list.add("test_dd");
        
        
        Long countExistingKeys = redisTemplate.countExistingKeys(list);
        
        logger.info("Redis count: {}",String.valueOf(countExistingKeys));
    }
}

结果

 

 如果key的数量很多,可以分配获取

 

posted @ 2020-08-12 19:12  大坑水滴  阅读(2969)  评论(1编辑  收藏  举报