jedis中scan的實現
阿新 • • 發佈:2018-03-01
ger tlist col cat lose ams final init 網上
我的版本說明:
redis服務端版本:redis_version:2.8.19
jedis:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.0</version>
</dependency>
1、網上關於scan的資料很少,我把自己遇到的先總結下:
scan時間復雜度:O(1)
遍歷一次所有的key:O(N),N代表次數
先貼下jedis實現代碼:
// 遍歷redis所有keypublic 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 = newArrayList<>(); 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(); } } }
jedis中scan的實現