redis怎么获取所有key
这篇文章主要介绍“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包
redisCacheService.keys(String pattern);
2.scan方法
public static Set<String> getAllKey(String match,int count){
//返回集
Set<String> 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<String> scanResult = jedisNode.scan(cur,param);
cur = scanResult.getStringCursor();
if("0".equals(cur){done=true};
List<String> result = scanResult.getResult();
result.foreach(data->{binKeys.add(data)});
}
}
});
return binKeys;
}
相关内容
这些是最新的
热门排行
- THINKPHP5+GatewayWorker+Workerman 开发在线客服系统
- 在手机浏览器网页中点击链接跳转到微信界面的方法
- 尊云网站目录系统 ThinkPHP5网站分类目录程序 v2.2.221011
- CentOS 7安装shadowsock(一键安装脚本)
- AdminTemplate 基于LayUI 2.4.5实现的网站后台管理模板
- 用NW.js(node-webkit)开发多平台的桌面客户端
- PHP生成随机昵称/用户名
- THINKPHP5网站分类目录程序 尊云网站目录系统
- 织梦(DEDECMS)微信支付接口 微信插件
- 基于LayUI开发的 网站后台管理模板 BeginnerAdmin
- 响应式后台网站模板 - AMA.ADMIN
- layuiAdmin后台管理模板 Iframe版
- LayUI 1.0.9 升级 至 LayUI 2.1.4 方法
- 简洁清爽的会员中心模板
- jQuery幸运大转盘抽奖活动代码