有個同事想實現獲取以某個字符開頭的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的數量很多,可以分配獲取