redis怎么获取所有key

其他教程   发布日期:2025年01月02日   浏览次数:182

这篇文章主要介绍“redis怎么获取所有key”,在日常操作中,相信很多人在redis怎么获取所有key问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”redis怎么获取所有key”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

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

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

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

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

1.keys cmos-cache包

  1. redisCacheService.keys(String pattern);

2.scan方法

  1. public static Set<String> getAllKey(String match,int count){
  2. //返回集
  3. Set<String> binKeys = new HashSet<>();
  4. //封装scan查询参数
  5. ScanParams param = new ScanParams().match(match).count(count);
  6. //获取查询对象
  7. RedisCacheServiceImpl redisCacheSer = (RedisCacheServiceImpl)RedisCacheService;
  8. JedisCluster jedisClu = redisCacheSer.getJedisCluster();
  9. //getClueterNodes获取集群节点,从各个集群中获取值进行遍历
  10. jedisClu.getClusterNodes().values().stream().forEach(pool->{
  11. boolean done = false;//
  12. String cur = "0";//游标,以0开始,返回0代表一次结束
  13. try(Jedis jedisNode = pool.getResource()){
  14. while(!done){
  15. ScanResult<String> scanResult = jedisNode.scan(cur,param);
  16. cur = scanResult.getStringCursor();
  17. if("0".equals(cur){done=true};
  18. List<String> result = scanResult.getResult();
  19. result.foreach(data->{binKeys.add(data)});
  20. }
  21. }
  22. });
  23. return binKeys;
  24. }

以上就是redis怎么获取所有key的详细内容,更多关于redis怎么获取所有key的资料请关注九品源码其它相关文章!