个人版本说明:redis
redis服务端版本:redis_version:2.8.19spa
jedis:code
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.0</version>
</dependency>
一、网上关于scan的资料不多,我把本身遇到的先总结下:blog
scan时间复杂度:O(1)get
遍历一次全部的key:O(N),N表明次数it
先贴下jedis实现代码:io
// 遍历redis全部key public static void scanSM() { Jedis jedis = null; ScanParams scanParams = new ScanParams(); // 设置每次scan个数 scanParams.count(scanCount); String scanRet = "0"; try { jedis = RedisUtil.getConn(); do { List<String> retList = new ArrayList<>(); ScanResult ret = jedis.scan(scanRet, scanParams.match(ConstantDefinition.SM + "*")); scanRet = ret.getStringCursor(); retList.addAll(ret.getResult()); ScanParseThread scanParseThread = Application.scanParseThreadMap.get(ConstantDefinition.SCAN_PARSE_NAME); LinkedBlockingQueue<List<String>> lbq = scanParseThread.getLbq(); lbq.put(retList); } while (!scanRet.equals("0")); } catch (Exception e) { logger.error(e); } finally { if (null != jedis) { jedis.close(); } } }