zoukankan      html  css  js  c++  java
  • redis之Scan

    scan 相比
    keys 具备有以下特点:
    1、复杂度虽然也是 O(n),但是它是通过游标分步进行的,不会阻塞线程;
    2、提供 limit 参数,可以控制每次返回结果的最大条数,limit 只是一个 hint,返回的
    结果可多可少;
    3、同 keys 一样,它也提供模式匹配功能;
    4、服务器不需要为游标保存状态,游标的唯一状态就是 scan 返回给客户端的游标整数;
    5、返回的结果可能会有重复,需要客户端去重复,这点非常重要;
    6、遍历的过程中如果有数据修改,改动后的数据能不能遍历到是不确定的;
    7、单次返回的结果是空的并不意味着遍历结束,而要看返回的游标值是否为零

    scan 参数提供了三个参数,第一个是 cursor 整数值,第二个是 key 的正则模式,第三
    个是遍历的 limit hint。第一次遍历时,cursor 值为 0,然后将返回结果中第一个整数值作为
    下一次遍历的 cursor。一直遍历到返回的 cursor 值为 0 时结束。
    127.0.0.1:6379> scan 0 match key99* count 1000
    1) "13976"
    2) 1) "key9911"
    2) "key9974"
    3) "key9994"
    4) "key9910"
    5) "key9907"
    6) "key9989"
    7) "key9971"
    8) "key99"
    9) "key9966"
    10) "key992"
    11) "key9903"
    12) "key9905"
    127.0.0.1:6379> scan 13976 match key99* count 1000
    1) "1996"
    2) 1) "key9982"
    2) "key9997"
    3) "key9963"
    4) "key996"
    5) "key9912"
    6) "key9999"
    7) "key9921"
    8) "key994"
    9) "key9956"
    10) "key9919"
    127.0.0.1:6379> scan 1996 match key99* count 1000
    1) "12594"
    2) 1) "key9939"
    2) "key9941"
    3) "key9967"
    4) "key9938"
    5) "key9906"
    6) "key999"
    7) "key9909"
    8) "key9933"
    9) "key9992"
    ......
    127.0.0.1:6379> scan 11687 match key99* count 1000
    1) "0"
    2) 1) "key9969"
    2) "key998"
    3) "key9986"
    4) "key9968"
    5) "key9965"
    6) "key9990"
    7) "key9915"
    8) "key9928"
    9) "key9908"
    10) "key9929"
    11) "key9944"

  • 相关阅读:
    filter 静态资源
    getRequestURI,getRequestURL的区别
    基于NodeJs的网页爬虫的构建(二)
    基于NodeJs的网页爬虫的构建(一)
    Reverse Words in a String
    Sum Root to Leaf Numbers
    Search Insert Position
    Wildcard Matching
    Trapping Rain Water
    Gray Code
  • 原文地址:https://www.cnblogs.com/wuwuyong/p/11756207.html
Copyright © 2011-2022 走看看