• 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秒 仅供参考

  • 相关阅读:
    Weather with you主题说明
    搜索枚举
    洛谷P2085——最小函数值
    洛谷P1402——乒乓球
    CSP2019,RP+=150。
    搜索之连通块(深搜广搜版)
    appium
    appium环境搭建
    Python抓取淘宝IP地址数据
    记录日志
  • 原文地址:https://www.cnblogs.com/zjk1/p/9619782.html
Copyright © 2020-2023  润新知