redis 用scan 代替keys 解決百萬數據模糊查詢超時問題


1.redis版本

Redis server v=2.8.24

2.pom文件redis版本

<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.0</version>
</dependency>

  

3.scan搜索

Jedis jedis=RedisUtils.getConn();

ScanParams scanParams = new ScanParams();

scanParams.match(“key*”);
scanParams.count(100000);//每10萬條查詢
Long startTime = System.currentTimeMillis();
List<String> retList = new ArrayList<String>();
final String scanRet = "0";
do {
ScanResult<String> ret = jedis.scan(scanRet, scanParams);
scanRet = ret.getStringCursor();// 返回用於下次遍歷的游標
retList.addAll(ret.getResult());// 返回結果
} while (!scanRet.equals("0"));
System.out.println("retList size:"+retList.size());
Long endTime = System.currentTimeMillis();
System.out.println("using time is:" + (endTime - startTime)+"ms");

我這局域網測試結果從700萬數據搜索某個key耗時11秒 僅供參考

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM