当前位置:SEO教学网 > 编程知识 >

[徐州seo公司排名]2) 1) &quot

  不过命令返回的元素数量总是符合一定规则的, 对于一个大数据集来说, 增量式迭代命令每次最多可能会返回数十个元素▼▪;而对于一个足够小的数据集来说▼△●●,可能会一次迭代返回所有的key

  SCAN增量式迭代命令并不保证每次执行都返回某个给定数量的元素▽●,甚至可能会返回零个元素, 但只要命令返回的游标不是 0 ,[九江seo公司立荐久澳]如何查看centos下t! 应用程序就不应该将迭代视作结束。

  

<-◆▼-;?php $redis = new Redis()■-○; $redis->connect('127▪●▷▼.0■◇○★.0▽▽▪.1'▽□◇;■○…▷, 6379)◆☆; /* 设置遍历的特性为不重复查找,该情况下扩展只会scan一次□▲,所以可能会返回空集合 */$redis->setOption(Redis::OPT_SCAN, Redis::SCAN_NORETRY); $it = NULL=★★▷;$pattern = '*'…□▪◇;$count = 50; // 每次遍历50条•=▷▪,注意是遍历50条☆▲★,遍历出来的50条key还要去匹配你的模式□-▽,[徐州seo公司排名]所以并不等于就能够取出50条key do{ $keysArr = $redis->scan($it▽•◁◆, $pattern, $count); if ($keysArr) { foreach ($keysArr as $key) { echo $key . "\n"◁☆;; } } } while ($it > 0); //每次调用 Scan会自动改变 $it 值,当$it = 0时 这次遍历结束 退出循环 echo '---------------------------------------------------------------------------------' . "•△;\n"★△□;=■◇-; /* 设置扩展在一次scan没有查找出记录时 进行重复的scan 直到查询出结果或者遍历结束为止 */$redis->setOption(Redis:…▷•●:OPT_SCAN, Redis:△☆△:SCAN_RETRY)…▼; $it = NULL□◆▪▪;$pattern = '•▪;*';$count = 50◆△•▽; // 每次遍历50条○▼◁=,注意是遍历50条◆△,遍历出来的50条key还要去匹配你的模式,所以并不等于就能够取出50条key //这种用法下我们只需要简单判断返回结果是否为空即可★•●▼, 如果为空说明遍历结束while ($keysArr = $redis->scan($it, $pattern◆●▷•, $count)){ foreach ($keysArr as $key) { echo $key ◇△★. "\n"; }}

 

  11) "5) "redis 127.0.0.1:6379>176"4) "如果你需要从一个数据集中查找特定的 KEYS,作为新的迭代参数 。scan 288 MATCH *11*1) "toolbar:false">[root@localhost php]# /usr/local/php/bin/php scan•△●◇.php bmbm2h1namebitbm1placescitieshhl---------------------------------------------------------------------------------bmbm2h1namebitbm1placescitieshhl


redis>☆★☆;2) "整个数据集已经被完整遍历过了•●○。15) "◆▼□;对于内存的消耗和redis服务器都是一个隐患▼▼,13) "
MATCH 选项简单的迭代演示:更多redis知识请关注redis入门教程栏目。key▷•○=:118"▼●;KEYS t??1) "?官网对于KEYS命令有一个提示□▷▽: KEYS 的速度非常快。

 

  

redis 127.0□▼.0.1□△:6379> scan 01) "17"2) 1) "□●▽;key•☆:12" 2) "key:8" 3) "key:4"□■; 4) "key…■:14" 5) "key▷▽-△:16" 6) "…▼◁;key:17"▪…; 7) "key:15" 8) "key…▽:10"◁•▪; 9) "◇=★;key▪▲:3" 10) "•▲■;key:7" 11) "key:1"redis 127▲••.0▲▲.0○☆.1:6379> scan 171) "□▽△●;0"●☆-;2) 1) "key:5" 2) "key:18" 3) "△◁▪;key▽▲:0" 4) "key:2" 5) "key▷△★:19" 6) "key☆◆•□:13" 7) "key:6" 8) "key:9" 9) "key:11"

 

  SCAN命令是一个基于游标的迭代器▼▲★。这意味着命令每次被调用都需要使用上一次这个调用返回的游标作为该次调用的游标参数,以此来延续之前的迭代过程

  表示开始一次新的迭代。Redis在一个有1百万个key的数据库里面执行一次查询需要的时间是40毫秒 。key:411"第二次迭代使用的是第一次迭代时返回的游标 17 ,Redis键命令用于管理redis的键。redis 127.0.0.1:6379>这表示迭代已经结束,key:116"希望对大家有一定的帮助。key:110"key:511"toolbar:false">redis 127.0.0▽■△○.1▼▽:6379>3) "□◇•▪。

  10) "redis>80"本文就来为大家介绍redis中两个遍历redis所有键的方法--KEYS pattern和SCAN cursor,key:211"!

  当SCAN命令的游标参数(即cursor)被设置为 0 时▽◁-, 服务器将开始一次新的迭代, 而当服务器向用户返回值为 0 的游标时, 表示迭代已结束。

  显而易见,SCAN命令的返回值 是一个包含两个元素的数组, 第一个数组元素是用于进行下一次迭代的新游标▲☆◁, 而第二个数组元素则又是一个数组, 这个数组中包含了所有被迭代的元素。

  KEYS命令使用很简单。

  当我们需要遍历Redis所有key或者指定模式的key时,首先想到的是KEYS命令:

  key:811"◇•▷•;full iteration •▽▷:以 0 作为游标开始一次新的迭代,288"所以◁▲,

SCAN cursor [MATCH pattern] [COUNT count]

 

  one"4) "14) "□▲▼▼;two"当redis中的key非常多时…▲-▷,redis>7) "•●;key•▲:111"一直调用 SCAN 命令,KEYS *1) "●▽●■;scan 224 MATCH *11*1) "3) "MSET one 1 two 2 three 3 four 4OKredis>。

  224"◆•▼;key▲☆-:115"•◁□;2) "▪--;2) 1) "。

  可以看出,以上的大部分迭代都不返回任何元素。在最后一次迭代◁…,SQL 我们通过将 COUNT 选项的参数设置为 1000 ▽☆, 强制命令为本次迭代扫描更多元素, 从而使得命令返回的元素也变多了。

  类似于KEYS 命令,增量式迭代命令通过给定 MATCH 参数的方式实现了通过提供一个 glob 风格的模式参数, 让命令只返回和给定模式相匹配的元素▪▪■。

  以上就是redis遍历所有key的方法的详细内容,更多请关注久澳传媒编程栏目其它相关文章◁-▼!

  

KEYS pattern

 

  注意:如果php执行报错 请升级到较新版本的Redis扩展。

[徐州seo公司排名]2) 1) "

  • 关注微信

猜你喜欢

微信公众号