redis HSCAN命令及jedis的hscan方法[通俗易懂]

redis HSCAN命令及jedis的hscan方法[通俗易懂]参考文档:http://doc.redisfans.com/key/scan.html@Override publicScanResultshscanToResltByVague(Stringkey,Stringpattern,Stringcursor,intpageSize){ List<Map.Entry<String,String>>result=null; List<Map.Entry<String,String&

参考文档:

http://doc.redisfans.com/key/scan.html

hscan是针对hash类型扫描,如果hash内条目非常多时,比如超过10万,那么根据默认的count = 10,每次扫描返回空的概率很大,此时可以根据情况把count调大:

redis HSCAN命令及jedis的hscan方法[通俗易懂]

下边是对jedis的 hscan进行了封装:

@Override
	public ScanResults hscanToResltByVague(String key, String pattern, String cursor, int pageSize) {
		List<Map.Entry<String, String>> result = null;
		List<Map.Entry<String, String>> results = new ArrayList<Map.Entry<String, String>>();
		ScanResults rsl = new ScanResults();
		ScanParams params = new ScanParams();
		String scanCursor = "0";
		if (!RobotUtils.isNull(cursor)) {
			scanCursor = cursor;
		}
		params.count(pageSize + 50);
		do {
			ScanResult<Entry<String, String>> scanResult = jedis.hscan(key, scanCursor, params.match(pattern));
			scanCursor = scanResult.getStringCursor();
			result = scanResult.getResult();
			results.addAll(result);
			if (results.size() >= pageSize) {
				break;
			}
		} while (!scanCursor.equals("0"));
		rsl.setCursor(scanCursor);
		rsl.setResultsEntry(results);
		rsl.setResultSize(results.size());
		return rsl;
	}

 实际使用:

@Test
     public void testRedisHscan() throws InterruptedException {
         
         Thread.sleep(1000*40);
         
         long start = System.currentTimeMillis();
         
         DataCache cache = DataCacheFactory.getInstance();
         //ScanResults rs = cache.hscanToResltByVague("METADATA:VDITEMS", "c3ed2101aa56421d9f0eb23e4b719c29*", "0", 50000);
         List<HashMap<String, String>> lst = cache.hscanToResltByVague(SysConfig.getProperty("metadata.cache.vdItem"), "c3ed2101aa56421d9f0eb23e4b719c29*", "0", 50000).getResults();
         
        long end = System.currentTimeMillis();
         
         System.out.println("+++++++++++++++++耗时:"+(end-start));
         try {
            System.out.println("+++++++++++++++++耗时:"+(end-start)+"     结果:"+JSONUtils.serializeObject(lst));
        } catch (IOException e) {
            // TODO Auto-generated catch block
             e.printStackTrace();
        }
     }

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/230809.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 微机原理与接口技术马春燕答案_微机原理与接口技术难不难

    微机原理与接口技术马春燕答案_微机原理与接口技术难不难spContent=课程面向有志于从事计算机过程控制系统设计、或对计算机硬件结构感兴趣的学习者。总体目标是:具备输入/输出接口控制系统软硬件初步设计能力。课程以“家庭安全防盗系统”案例引导,主要介绍:计算机基础知识、微型机基本工作原理、80×86基本指令集、汇编程序设计、存储器接口设计、接口控制技术等。——课程团队课程概述在今天的信息化时代,计算机已成为了人类工作和生活中必不可少的一部分。计算机…

    2022年10月2日
  • 某音信息案例_关于信息泄露的案例

    某音信息案例_关于信息泄露的案例抓包。抓到了一个share_url我访问过去看了下,https://www.iesdouyin.com/share/user/102064772608有数据的。那就拿数据。然后发现它的数字做了字符集映射。搞他。下载.ttf的文件,s3a.bytecdn.cn/ies/resource/falcon/douyin_falcon/static/font/iconfont_da2e2…

    2022年9月26日
  • Windows10下安装linux(Utunbu)双系统「建议收藏」

    Windows10下安装linux(Utunbu)双系统「建议收藏」电脑的硬盘应该是mbr模式1.正常安装windows10系统2.打开windows10系统,安装EaSYCBD2.243.右键系统菜单,打开磁盘管理选择一个硬盘压缩100g(自己定义,不少于50G)。4.打开电源选项,关闭快速启动5.插入Untunbu启动盘,重启进入BIOS,关闭SecureBOOT,并以USB为第一启动项6.进入Untunbu,选择installUtunbu,不要联网,然后选择挂载点。10-20G的“/”,主区,etx4;200MB的“/boot”逻辑分区,etx

    2022年7月24日
  • 使用Windows PE的U盘安装win7

    前年刚去公司的时候用PE装过好多系统,最近又装一台华硕的,碰到了一个问题,一起记录了下。华硕X45,Bios已经改为U盘启动了,但就是进不去,因为知道可能还有个选磁盘启动项的键,找了半天原来按Esc就

    2021年12月21日
  • 史上最全Java多线程面试题及答案[通俗易懂]

    史上最全Java多线程面试题及答案[通俗易懂]这篇文章主要是对多线程的问题进行总结的,因此罗列了40个多线程的问题。这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。可能有些问题网上有、可能有些问题对应的答案也有、也可能有些各位网友也都看过,但是本文写作的重心就是所有的问题都会按照自己的理解回答一遍,不会去看网上的答案,因此可能有些问题讲的不对,能指正的希望大家不吝指教。 1、多线程有什么用?一个可能在很多人看来…

    2022年8月27日
  • Web安全原理剖析(四)——报错注入攻击[通俗易懂]

    Web安全原理剖析(四)——报错注入攻击[通俗易懂]报错注入攻击

    2022年9月30日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号