redis keys*xx*替代方案
阿新 • • 發佈:2020-08-12
有個同事想實現獲取以某個字元開頭的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的數量很多,可以分配獲取