redis获取所有key的方法

ID:976 / 打印

积累知识,胜过积蓄金银!毕竟在数据库开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《redis获取所有key的方法》,就带大家讲解一下Rediskey知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

keys:全量遍历键,用来列出所有满足特定正则字符串规则的key,假设redis此时正在生产环境下,使用该命令就会造成隐患,当redis数据量比较大时:

keys会一次性返回所有符合条件的key,所以会造成redis的卡顿。

SCAN是一个基于游标的迭代器,需要基于上一次的游标延续之前的迭代过程。SCAN以0作为游标,开始一次新的迭代,直到命令返回游标0完成一次遍历。

此命令并不保证每次执行都返回某个给定数量的元素,甚至会返回0个元素,但只要游标不是0,程序都不会认为SCAN命令结束,但是返回的元素数量大概率符合count参数。另外,SCAN支持模糊查询。

1.keys cmos-cache包

redisCacheService.keys(String pattern); 

2.scan方法

public static Set getAllKey(String match,int count){     //返回集     Set binKeys = new HashSet();     //封装scan查询参数     ScanParams param = new ScanParams().match(match).count(count);     //获取查询对象     RedisCacheServiceImpl redisCacheSer = (RedisCacheServiceImpl)RedisCacheService;     JedisCluster jedisClu = redisCacheSer.getJedisCluster(); //getClueterNodes获取集群节点,从各个集群中获取值进行遍历     jedisClu.getClusterNodes().values().stream().forEach(pool->{         boolean done = false;//         String cur = "0";//游标,以0开始,返回0代表一次结束         try(Jedis jedisNode = pool.getResource()){             while(!done){                 ScanResult scanResult = jedisNode.scan(cur,param);                 cur = scanResult.getStringCursor();                 if("0".equals(cur){done=true};                 List result = scanResult.getResult();                 result.foreach(data->{binKeys.add(data)});             }         }     });     return binKeys; }

今天关于《redis获取所有key的方法》的内容介绍就到此结束,如果有什么疑问或者建议,可以在the24.cn下多多回复交流;文中若有不正之处,也希望回复留言以告知!

上一篇: Unable to connect to Redis无法连接到Redis解决的全过程
下一篇: 搭建单机Redis缓存服务的实现

作者:admin @ 24资源网   2024-09-02

本站所有软件、源码、文章均有网友提供,如有侵权联系308410122@qq.com

与本文相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。