1. 程式人生 > >jedis中scan的實現

jedis中scan的實現

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所有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(); } } }

jedis中scan的實現