当前位置:首页 > 正文

redis怎么获取所有key_redis怎么配置

更新时间:2025-02-02 16:45 阅读量:23164

这篇文章主要介绍"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相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!