当前位置:首页 > 正文
redis怎么获取所有key_redis怎么配置
这篇文章主要介绍"redis怎么获取所有key",在日常操作中,相信很多人在redis怎么获取所有key问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"redis怎么获取所有key"的疑惑有所帮助!此时此刻呢,请跟着小编一起来学习吧!
keys:全量遍历键,用来列出所有满足特定正则字符串规则的key,假设redis此时正在生产环境下,使用该命令就会造成隐患,当redis数据量比较大时:
keys会一次性返回所有符合条件的key,所以会造成redis的卡顿.
SCAN是一个基于游标的迭代器,需要基于上一次的游标延续之前的迭代过程.SCAN以0作为游标,开始一次新的迭代,直到命令返回游标0完成一次遍历.
此命令并不保证每次执行都返回某个给定数量的元素,甚至会返回0个元素,但只要游标不是0,程序都不会认为SCAN命令结束,但是返回的元素数量大概率符合count参数.另外,SCAN支持模糊查询.
①keys cmos-cache包redisCacheService.keys(String?pattern);
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"的学习就结束了,希望能够解决大家的疑惑.理论与实践的搭配能更好的让粉丝们变的更强学习,快去试试吧!若想继续学习更多相关知识,请继续关注***网站,小编会继续努力为大家带来更多实用的文章!
以上就是晶成百科网小编为大家整理的redis怎么获取所有key相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!