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