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&

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

参考文档:

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;
	}

Jetbrains全家桶1年46,售后保障稳定

 实际使用:

@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)
上一篇 2025年6月17日 下午5:15
下一篇 2025年6月17日 下午5:43


相关推荐

  • 基于SAML的ADFS认证集成方案

    基于SAML的ADFS认证集成方案whyADFS 之所以和 ADFS sayhello 是公司要求 实现内网项目在外网下的 SSO 登录访问当第一次看到 ADFS 时 第一想到是公司内部哪个工程师搞得一个架构 取英文缩写 ADFS 大概用于身份认证 提到到认证方式 想到目前市面主流的 oauth2 Jwt OpenID 等 基于 SAML2 0 的 ADFS 服务器集成方案是啥 如果是内部框架也没有太详细的部署方案啊 去搜索 saml 概念 发

    2026年3月19日
    2
  • Cursor这几个天花板级别的技巧,让你轻松成为Cursor高手!

    Cursor这几个天花板级别的技巧,让你轻松成为Cursor高手!

    2026年3月16日
    2
  • LMDB笔记_pdf怎么做笔记

    LMDB笔记_pdf怎么做笔记作为一个计算机底层小白,在了解一个知识点的时候时常需要恶补很多基础知识。本文记录在了解LMDB过程中接触的知识点。LMDB基本架构一个比较官方的解释:lmdb的基本做法是使用mmap文件映射,不管这个文件存储实在内存上还是在持久存储上。lmdb的所有读取操作都是通过mmap将要访问的文件只读的映射到虚拟内存中,直接访问相应的地址.因为使用了read-only的mmap,同样避免了程序错误将存…

    2026年4月18日
    4
  • Python循环语句_for循环

    Python循环语句_for循环说明 1 计次循环 一般应用在循环次数已知的情况下 通常适用于枚举或遍历序列以及迭代对象中的元素 2 迭代变量用于保存读取的值 3 对象为要遍历或迭代的对象 该对象可以是任何有序的序列对象 如字符串 列表 元组等 循环体为一组被重复执行的语句 4 for 循环语句可以循环数值 遍历字符串 列表 元组 集合 字典等 5 实质上是将后面可迭代对象的元素依次赋值给前面的变量 每赋值一次 执行一次语句块 也就是一次循环 6 Python 当中采用的是 forin 结构 迭代器原理 语法形式 for

    2026年3月16日
    2
  • java varbinary_SQL 中存放 varbinary型数据

    java varbinary_SQL 中存放 varbinary型数据使用带有 BULK 选项的 OPENROWSET 以下 Transact SQL 增强功能支持 OPENROWSET BULK 函数 与 SELECT 一起使用的 FROM 子句可以调用 OPENROWSET BULK 而非表名 同时可以实现完整的 SELECT 功能 带有 BULK 选项的 OPENROWSET 在 FROM 子句中需要有一个相关名称 也称为范围变量或别名 可以指定列别

    2026年3月19日
    2
  • 横评即梦/可灵/星流/MJ/4o/Recraft等14款生图工具,到底谁更强?

    横评即梦/可灵/星流/MJ/4o/Recraft等14款生图工具,到底谁更强?

    2026年3月12日
    2

发表回复

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

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