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的数量很多,可以分配获取

原文地址:https://www.cnblogs.com/qq931399960/p/13492479.html