华夏棋牌

目录 搜索
Cluster cluster addslots(集群 槽位) cluster count failure reports(集群计数掉落败申报) cluster countkeysinslot cluster delslots cluster failover cluster forget cluster getkeysinslot cluster info cluster keyslot(集群键槽) cluster meet cluster nodes(集群节点) cluster replicate(集群复制) cluster reset(集群重置) cluster saveconfig cluster set config epoch cluster setslot cluster slaves cluster slots readonly readwrite Connection auth echo ping quit select swapdb Geo geoadd geodist geohash geopos georadius georadiusbymember Hashes hdel hexists hget hgetall hincrby hincrbyfloat hkeys hlen hmget hmset hscan hset hsetnx hstrlen hvals HyperLogLog pfadd pfcount pfmerge Keys del dump exists expire expireat keys migrate move object persist pexpire pexpireat pttl randomkey rename renamenx restore scan sort touch ttl type unlink wait Lists blpop brpop brpoplpush lindex linsert llen lpop lpush lpushx lrange lrem lset ltrim rpop rpoplpush rpush rpushx Pub/Sub psubscribe publish pubsub punsubscribe subscribe unsubscribe Scripting eval evalsha script debug script exists script flush script kill script load Server bgrewriteaof bgsave client getname client kill client list client pause client reply client setname command command count command getkeys command info config get config resetstat config rewrite config set dbsize debug object debug segfault flushall flushdb info lastsave monitor role save shutdown slaveof slowlog time Sets sadd scard sdiff sdiffstore sinter sinterstore sismember smembers smove spop srandmember srem sscan sunion sunionstore Sorted Sets zadd zcard zcount zincrby zinterstore zlexcount zrange zrangebylex zrangebyscore zrank zrem zremrangebylex zremrangebyrank zremrangebyscore zrevrange zrevrangebylex zrevrangebyscore zrevrank zscan zscore zunionstore Strings append bitcount bitfield bitop bitpos decr decrby get getbit getrange getset incr incrby incrbyfloat mget mset msetnx psetex set setbit setex setnx setrange strlen Transactions discard exec multi unwatch watch
文字

SCAN cursor [MATCH pattern] [COUNT count]

自2.8.0起可用。

时间严重年夜度:华夏棋牌 O(1)用于每个召唤。O(N)阻拦完全的迭代,网罗足够的敕令挪用以使游标前往0. N是荟萃中元素的数目。

应用 SCAN 敕令和亲近相关的敕令 SSCAN,HSCAN 和 ZSCAN 来递增地遍历一组元素。

  • 华夏棋牌SCAN 迭代以后选定的 Redis 数据库中的一组键。

  • SSCAN 迭代 Sets 类型的元素。

  • HSCAN 迭代哈希类型的字段及其联系关系值。

  • ZSCAN 迭代 Sorted Set 类型的元素及其相关分数。

华夏棋牌由于这些敕令允许增量迭代,每次挪用只前往年夜批元素,是以可以在临盆中应用它们,而无需像 KEYS 或 SMEMBERS 这样的敕令能够会在被挪用时长时间(以致几秒)壅闭服务器的弱点键或元素的年夜荟萃。

华夏棋牌可是,虽然像 SMEMBERS 这样的壅闭敕令能够在给准时间供应荟萃中的一切元素,但 SCAN 系列敕令仅对前往的元素供应无限的保证,由于我们递增迭代的荟萃能够在迭代历程当中发生更改。

请重视,SCAN,SSCAN,HSCAN 和 ZSCAN 的使命要领异常类似,是以本文档涵盖了一切四个敕令。可是,一个显着的差异是,关于SSCAN,HSCAN 和 ZSCAN,第一个参数是生涯 Set,Hash 或 Sorted Set 值的密钥的称谓。SCAN 敕令不须要任何键名参数,由于它在以后数据库中迭代键,以是迭代工具就是数据库自己。

SCAN的基本用法

华夏棋牌SCAN 是一个基于游标的迭代器。这意味着在每次挪用该敕令时,服务器都邑前往一个更新的游标,用户须要不才一次挪用中将其用作游标参数。

华夏棋牌当光标设置为0时泉源迭代,当服务器前往的光标为0时终止迭代。以下是 SCAN 迭代的示例:

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"

华夏棋牌不才面的例子中,第一个挪用应用零作为游标,以泉源迭代。第二次挪用应用前一次挪用前往的游标作为回复的第一个元素,即17。

正如你所看到的,SCAN前往值 华夏棋牌是一个网罗两个值的数组:第一个值是下一次挪用中应用的新游标,第二个值是元素数组。

由于在第二次挪用中前往的游标是0,以是服务器向挪用者发旌旗暗记告诉完成迭代,而且荟萃被完全探索。应用游标值0泉源迭代,并挪用 SCAN,直到前往的游标再次为0,称为完全迭代

扫描保证

SCAN 敕令和 SCAN 系列中的其他敕令能够向用户供应与完全迭代联系关系的一组保证。

  • 华夏棋牌完全迭代总是从完全迭代的泉源到阻拦检索荟萃中存在的一切元素。这意味着假定迭代泉源时给定元素位于荟萃外部,而且在迭代终止时依然存在,那么在某个点 SCAN 将其前往给用户。

  • 华夏棋牌完全迭代从不会前往荟萃中不存在的任何元素,从完全迭代的泉源到阻拦。是以,假定一个元素在迭代泉源之前被移除,而且在迭代历程当中永世不会将其添加回荟萃中,SCAN可以确保这个元素永世不会被前往。

但是由于 SCAN 只需很少的状态相关(只是光标),它有以下弱点:

  • 华夏棋牌给定的元素能够会一再再三前往。应用法式模范模范可以处置赏罚赏罚重复元素的情形,例如仅应用前往的元向来推行一再再三重新应用时安然的操作。

  • 在一切迭代历程当中着实不总是涌现在荟萃中的元素能够被前往或不被前往:它是未界说的。

每次 SCAN 召唤前往的元素数目

华夏棋牌SCAN 家族功效不保证每次通话前往的元素数目都在给定的规模内。这些敕令还允许前往零个元素,而且只需前往的游标不为零,客户端就不应该推敲迭代完成。

华夏棋牌可是,前往的元素的数目是公正的,也就是说,现实上,SCAN 能够会在迭代年夜集应时前往数十个元素的最年夜数目的元素,或许能够会将荟萃中的一切元素一次前往当迭代荟萃足够小以便在外部体现为编码数据结构(这发生在小荟萃,散列和有序荟萃)时挪用。

然则,用户可以应用 COUNT 选项调剂每次召唤前往元素数目级的序次。

COUNT选项

虽然 SCAN 不供应有关每次迭代前往的元素数目标保证,但可以应用 COUNT 选项凭履历调剂 SCAN 的行动。基本上用 COUNT,用户指定了每次挪用应当完成的使命量,以便从荟萃中检索元素。这只是完成的一个体现,然则浅易来讲,这是您实验历程当中年夜部门时间所希冀的。

  • COUNT 的默许值是10。

  • 当迭代密钥空间,或许一个足够年夜的荟萃,哈希或排序荟萃,以便用哈希表体现时(假定没有应用 MATCH 选项),服务器通常会前往计数或比每次挪用的计数元素多一点。

  • 华夏棋牌迭代编码为 intsets 的荟萃(由整数组成的小荟萃)或编码为 ziplists 的哈希和排序集(小哈希和由小个体值组成的荟萃)时,通常一切元素都在第一个 SCAN 挪用中前往,而岂论 COUNT 值。

主要提醒:每次迭代都不须要应用类似的 COUNT 值。挪用者可以凭证须要自在地将计数从一次迭代更改成此外一次迭代,只需不才次挪用中转达的游标是在先前对该敕令的挪用中取得的游标。

MATCH选项

只能迭代婚配给定全局项目形式的元素,类似于只将形式作为参数的 KEYS 敕令的行动。

为此,只需MATCH <pattern>在 SCAN 敕令末尾附加参数(它可与一切 SCAN 系列敕令一起应用)。

这是一个应用 MATCH 阻拦迭代的例子:

redis 127.0.0.1:6379> sadd myset 1 2 3 foo foobar feelsgood(integer) 6redis 127.0.0.1:6379> sscan myset 0 match f*1) "0"2) 1) "foo"   2) "feelsgood"   3) "foobar"redis 127.0.0.1:6379>

主要的是要重视,在将数据前往给客户端之前,在从荟萃中检索元素以后应用 MATCH 华夏棋牌过滤器。这意味着假定形式婚配荟萃中很少的元素,SCAN 很能够在年夜多数迭代中都不前往元素。一个例子以下所示:

redis 127.0.0.1:6379> scan 0 MATCH *11*1) "288"2) 1) "key:911"redis 127.0.0.1:6379> scan 288 MATCH *11*1) "224"2) (empty list or set)redis 127.0.0.1:6379> scan 224 MATCH *11*1) "80"2) (empty list or set)redis 127.0.0.1:6379> scan 80 MATCH *11*1) "176"2) (empty list or set)redis 127.0.0.1:6379> scan 176 MATCH *11* COUNT 10001) "0"2)  1) "key:611"    2) "key:711"    3) "key:118"    4) "key:117"    5) "key:311"    6) "key:112"    7) "key:111"    8) "key:110"    9) "key:113"   10) "key:211"   11) "key:411"   12) "key:115"   13) "key:116"   14) "key:114"   15) "key:119"   16) "key:811"   17) "key:511"   18) "key:11"redis 127.0.0.1:6379>

华夏棋牌正如您所看到的,年夜部门挪用都前往了零个元素,但是最后一次挪用的 COUNT 为1000,以强迫敕令为该迭代推行更多扫描。

多重并行迭代

无限数目的客户端能够会同时迭代统一个荟萃,由于迭代器的完全状态在游标中,每次挪用都邑取得并前往给客户端。服务器端基本没有状态。

终止中央的迭代

华夏棋牌由于没有状态服务器端,但全状态由光标捕捉,是以挪用者可以自在地在中途中终止一次迭代,而无需以任何要领将此旌旗暗记告诉给服务器。无限次的迭代可以泉源,而且不会在没有任何效果的情形下终止。

应用破损的光标挪用SCAN

挪用带有破损,负值,超规模或其他有用光标的 SCAN 将招致未界说的行动,但不会招致瓦解。未界说的是,关于前往元素的保证不克不及再由 SCAN 完成来保证。

唯一有用的游标是:

  • 泉源迭代年光标值为0。

  • 前一次挪用 SCAN 前往的光标为了一连迭代。

保证终止

华夏棋牌SCAN 算法只需在迭代荟萃的年夜小保持限制为给定的最年夜年夜小时才被保证终止,否则迭代总是增添的荟萃能够招致 SCAN 永世不会终止完全迭代。

华夏棋牌这很容易直不雅不雅地看到:假定荟萃增添,为了会见一切能够的元素须要做更多的使命,而且终止迭代的才干取决于 SCAN 挪用的次数和它的 COUNT 选项值,与珍藏增添的速率。

前往值

华夏棋牌SCAN,SSCAN,HSCAN 和 ZSCAN 前往一个双元素多批量回复,其中第一个元素是一个体现无符号64位数字(游标)的字符串,第二个元素是具有元素数组的多个批量。

  • SCAN 数组元素是一个键列表。

  • 华夏棋牌SSCAN 元素数组是 Set 成员的列表。

  • 华夏棋牌关于 Hash 的每个前往元素,HSCAN 元素数组网罗两个元素,一个字段和一个值。

  • 关于有序荟萃的每个前往元素,ZSCAN 元素数组网罗两个元素,一个成员及其相关分数。

其他例子

迭代一个哈希值。

redis 127.0.0.1:6379> hmset hash name Jack age 33
OK
redis 127.0.0.1:6379> hscan hash 0
1) "0"
2) 1) "name"   
   2) "Jack"   
   3) "age"   
   4) "33"
上一篇: 下一篇: