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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM