当前位置:   article > 正文

redis中keys和scan的对比_redis的scan和keys的区别

redis的scan和keys的区别
redis中keys和scan的对比

两者都是用来返回key的,但是使用场景和方法不同。

一、keys
KEYS pattern
比如:
	keys *
	keys user_info:*

特点:
1、在选定的库中,一次性全部返回符合条件的key,如果数据量很大将会等待很久,
因此,只适合用在可控的量小的键查询,比如几百,几千。
2、返回的键精确,不会重复,可放心使用。

二、scan
SCAN cursor [MATCH pattern] [COUNT count]

cursor:查询游标,第一次0,后面就是使用返回数组中第一个值,当返回的值为0时则表示遍历完毕。

MATCH pattern:匹配一个表达式,同上,选填。

[COUNT count]:指定每次迭代返回元素的最大值的一种提示(默认值为 10),但是在大多数情况下,
	这种提示都是有效的,因此,返回的个数在count左右。

示例:
scan 0 MATCH user_info:* COUNT 10
返回:
1)  "6"
2)  1)   "user_info:85:1114850"
	2)   "user_info:88:1114880"
	3)   "user_info:16:1081160"
	4)   "user_info:84:1114840"
	5)   "user_info:77:1114770"
	6)   "user_info:83:1114830"
	7)   "user_info:79:1114790"
	8)   "user_info:74:1114740"
	9)   "user_info:72:1114720"
	10)   "user_info:69:1114690"
	11)   "user_info:86:1114860"
	12)   "user_info:78:1114780"


特点:
1、随机性较高,没有规律。
2、唯一能判断遍历结束的标志就是返回结果集的第一个元素,示例中的6,游标只是一个标识,不可比较,
	下次返回的游标可能比现在大或者小,但是只要等于0就确定结束了。
3、返回的列表存在重复的情况,需要应用程序自己处理。
4、由于全部遍历完需要一点时间,如果过程中键被操作了,那么影响未知。
5、返回的数量没有确定的数量


在数量未知或者数量较大的情况下使用scan遍历来获取所有的key

$cursor = 0;
$keys_arr = [];
while(true){
	$re = $redis->scan($cursor, 'user_info:*', 10);// 仅表示示例
	if($re && is_array($re)){
		if($re[2] && is_array($re[2])){
			// 加入$keys_arr
		}
		if($re[1] == 0){
			break; // end
		}else{
			$cursor = $re[1];
		}
	}else{
		break;// 报错
	}
}

// 排重
$keys_arr = array_unique($keys_arr);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/200985
推荐阅读
相关标签
  

闽ICP备14008679号