复述,键命令用于管理复述的键.redis如何快速遍历所有关键的?相信有很多人都不太了解,今天小编为了让大家更加了解复述,快速遍历所有关键的方法,所以给大家总结了以下内容,一起往下看吧。
键模式官网对于键命令有一个提示:键的速度非常快,例如,复述,在一个有1百万个关键的数据库里面执行一次查询需要的时间是40毫秒。但在一个大的数据库中使用它仍然可能造成性能问题,如果你需要从一个数据集中查找特定的钥匙,你最好还是用复述的集合结构集来代替。
键命令使用很简单。
redis>MSET>扫描光标[匹配模式][数计数]
扫描每次执行都只会返回少量元素,所以可以用于生产环境,而不会出现像钥匙或者SMEMBERS命令带来的可能会阻塞服务器的问题。
扫描命令是一个基于游标的迭代器。这意味着命令每次被调用都需要使用上一次这个调用返回的游标作为该次调用的游标参数,以此来延续之前的迭代过程
当扫描命令的游标参数(即光标)被设置为0时,服务器将开始一次新的迭代,而当服务器向用户返回值为0的游标时,表示迭代已结束。
简单的迭代演示:
复述127.0.0.1:6379>扫描0 1)“17”; 2)1)“关键:12“; 2)“关键:8“; 3)“关键:4“; 4)“关键:14“; 5)“关键:16“ 6)“关键:17“; 7)“关键:15“ 8)“关键:10“; 9)“关键:3“; 10)“关键:7“; 11)“关键:1“; 复述,127.0.0.1:6379>扫描17 1)“0”; 2)1)“关键:5“; 2)“关键:18“; 3)“关键:0“; 4)“关键:2“; 5)“关键:19“; 6)“关键:13“; 7)“关键:6“; 8)“关键:9“; 9)“关键:11“
在上面这个例子中,第一次迭代使用0作为游标,表示开始一次新的迭代第。二次迭代使用的是第一次迭代时返回的游标17日作为新的迭代参数。
显而易见,扫描命令的返回值是一个包含两个元素的数组,第一个数组元素是用于进行下一次迭代的新游标,而第二个数组元素则又是一个数组,这个数组中包含了所有被迭代的元素。
注意:返回的游标不一定是递增的,可能后一次返回的游标比前一次的小。
在第二次调用扫描命令时,命令返回了游标0,这表示迭代已经结束,整个数据集已经被完整遍历过了。
迭代:以0作为游标开始一次新的迭代,一直调用扫描命令,直到命令返回游标0,我们称这个过程为一次完整遍历。
扫描增量式迭代命令并不保证每次执行都返回某个给定数量的元素,甚至可能会返回零个元素,但只要命令返回的游标不是0,应用程序就不应该将迭代视作结束。
不过命令返回的元素数量总是符合一定规则的,对于一个大数据集来说,增量式迭代命令每次最多可能会返回数十个元素;而对于一个足够小的数据集来说,可能会一次迭代返回所有的关键
数选项
对于增量式迭代命令不保证每次迭代所返回的元素数量,我们可以使用数选项,对命令的行为进行一定程度上的调整.COUNT选项的作用就是让用户告知迭代命令,在每次迭代中应该从数据集里返回多少元素。使用数选项对于对增量式迭代命令相当于一种提示,大多数情况下这种提示都比较有效的控制了返回值的数量。
注意:数选项并不能严格控制返回的关键数量,只能说是一个大致的约束。并非每次迭代都要使用相同的计算值,用户可以在每次迭代中按自己的需要随意改变计算值,只要记得将上次迭代返回的游标用到下次迭代里面就可以了。
匹配选项
类似于键命令,增量式迭代命令通过给比赛定参数的方式实现了通过提供一个水珠风格的模式参数,让命令只返回和给定模式相匹配的元素。
匹配选项对元素的模式匹配工作是在命令从数据集中取出元素后和向客户端返回元素前的这段时间内进行的,所以如果被迭代的数据集中只有少量元素和模式相匹配,那么迭代命令或许会在多次执行中都不返回任何元素。
以下是这种情况的一个例子:
复述127.0.0.1:6379>扫描匹配0 * 11 * 1)“288”; 2)1)“关键:911“; 复述,127.0.0.1:6379>扫描288 * 11 *相匹配 1)“224”; 2)(空列表或一组) 复述,127.0.0.1:6379>扫描224 * 11 *相匹配 1)“80”; 2)(空列表或一组) 复述,127.0.0.1:6379>扫描80 * 11 *相匹配 1)“176”; 2)(空列表或一组) 复述,127.0.0.1:6379>扫描176 * 11 *匹配数1000 1)“0”; 2)1)“关键:611“; 2)“关键:711“; 3)“关键:118“; 4)“关键:117“; 5)“关键:311“; 6)“关键:112“; 7)“关键:111“; 8)“关键:110“; 9)“关键:113“; 10)“关键:211“; 11)“关键:411“; 12)“关键:115“; 13)“关键:116“; 14)“关键:114“; 15)“关键:119“; 16)“关键:811“; 17)“关键:511“; 18)“关键:11“; 复述,127.0.0.1:6379>复述,如何快速遍历所有钥匙