有个同事想实现获取以某个字符开头的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的数量很多,可以分配获取