华夏棋牌

目录 搜索
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
文字

BLPOP key [key ...] timeout

自2.0.0起可用。

时间严重年夜度: O(1)

BLPOP是一个壅闭列表pop元素。它是LPOP的壅闭版本,由于它在没有任何元素从给定列表中弹出时壅闭毗连。一个元素从第一个非空列表的头部弹出,并按给定的序次检查给定的键。

非壅闭行动

当挪用BLPOP时,假定至少有一个指定键网罗非空列表,则会从列表头部弹出一个元素,并将其从弹出的列表中弹出并前往给挪用者key

凭证它们给出的序次检查密钥。假定该键list1不存在list2而且list3华夏棋牌生涯非空列表。推敲下面的敕令:

BLPOP list1 list2 list3 0

BLPOP保证从列表中存储的列表中前往一个元素list2(由于它是检查时的第一个非空列表list1list2并按此list3序次)。

阻挡行动

华夏棋牌假定没有指定的密钥存在,则BLPOP将阻挡该毗连,直到此外一个客户端对其中一个密钥推行LPUSH或RPUSH操作。

一旦在其中一个列表上泛起新数据,客户端将前往解锁它的密钥称谓和弹出的值。

当BLPOP招致客户端壅闭且指定了非零超不时,客户端将nil华夏棋牌在指定超时过不时扫除阻挡前往多批量值,而纰谬至少一个指定键推行推送操作。

超时参数被诠释为指定要阻挡的最年夜秒数的整数值。可以应用零超时来无限期地壅闭。

甚么要害是先服务?甚么客户?甚么元素?优先序次细节。

  • 假定客户端试图壅闭多个密钥,但至少有一个密钥网罗元素,则前往的密钥/元素对是从左到右具有一个或多个元素的第一个密钥。在这类情形下,客户端不会被阻挡。是以,举例来讲BLPOP key1 key2 key3 key4 0,假定两key2key4非空,将总是前往从一个元素key2

  • 假似乎一个密钥壅闭了多个客户端,则要服务的第一个客户端是期待更多时间的客户端(为该密钥壅闭的第一个客户端)。一旦客户端被扫除关闭,它不生涯任何优先权,当它再次阻挡下一次BLPOP挪用时,它将被照顾地服务于曾经被类似密钥壅闭的客户端的数目,这将在它之前被服务(从第一个到最后被阻挡)。

  • 华夏棋牌当客户端同时壅闭多个密钥而且多个密钥中同时有元素时(由于事务或Lua剧本向多个列表添加元素),客户端将应用第一个密钥扫除壅闭(假定它有足够的元素为我们的客户供应服务,由于能够有其他客户也在期待此密钥)。基本上,在推行每条敕令以后,Redis将运转吸收数据而且至少有一个客户端被阻挡的一切密钥的列表。该列表按新元素到达时间排序,从吸收数据的第一个密钥到最后一个密钥。关于每个已处置赏罚赏罚的密钥,只需该密钥中网罗元素,Redis将以FIFO要领为一切期待该密钥的客户端供应服务。当密钥为空或许不再有客户端期待该密钥时,

多个元素在列表中被推入时BLPOP的行动。

华夏棋牌有时间,一个列表可以在类似的看法性敕令的曲折文中吸收多个元素:

  • Variadic推送操作LPUSH mylist a b c

  • 华夏棋牌在对统一列表推行多个推动操作的MULTI块的EXEC后。

  • 华夏棋牌应用Redis 2.6或更新版本推行Lua剧本。

当有多个客户端壅闭的列表中推入多个元素时,Redis 2.4和Redis 2.6或更新版本的行动是不合的。

关于Redis 2.6来讲,推行一再再三推送的敕令会被推行,而且只需在被阻挡的客户端推行敕令后才会推行。推敲这个敕令序列。

Client A:   BLPOP foo 0Client B:   LPUSH foo a b c

假定应用Redis 2.6或更高版本的服务器发生上述情形,则客户端A将与该c元素一起供应服务,由于在该列表网罗LPUSH敕令以后c,b,a,是以从左边取一个元素意味着前往c

相反,Redis 2.4以不合的要领使命:客户端在推送操作的曲折文中服务,是以只需LPUSH foo a b c泉源将第一个元素推送到列表中,它就会被传送到客户端A,客户端A将吸收a华夏棋牌(第一个元素被推送)。

华夏棋牌Redis 2.4的行动在将数据复制或生涯到AOF文件时发生了许多效果,是以在Redis 2.6中引入了更通用和语义更质朴的行动,以防止泛起效果。

请重视,出于异常的启事,Lua剧本或MULTI/EXEC块能够会将元素推出列表中,然后删除列表华夏棋牌。在这类情形下,只需在推行单个敕令,事务或剧本后没有数据涌现在列表中,被阻挡的客户端基本就不会被服务,而且将一连被阻挡。

BLPOPMULTI/ EXEC生意营业中

BLPOP可以与流水线一起应用(发送多个敕令并批量读取照顾),但是这类设置简直完全在它是流水线的最后一个敕令时才居心义。

在MULTI / EXEC模块中应用BLPOP没有多年夜意义,由于它须要壅闭一切服务器以便以原子要领推行该模块,而这又禁绝可其他客户端推行推送操作。出于这个启事,当列表为空时,MULTI / EXEC中的BLPOP行动是前往一个nil华夏棋牌多批量回复,这与到达超时的时间发生的情形是一样的。

假定你喜欢科幻小说,想想在MULTI / EXEC块内以无限速率运动的时间......

前往值

阵列回复:详细为:

  • nil华夏棋牌当没有元件可以被弹出多批量和超时过时。

  • 第一个元素是元素被弹出的键的称谓,第二个元素是弹出元素的值的两元素的多块。

例子

redis> DEL list1 list2(integer) 0redis> RPUSH list1 a b c(integer) 3redis> BLPOP list1 list2 01) "list1"2) "a"

可靠的行列

华夏棋牌当BLPOP向客户端前往一个元素时,它也从列表中删除该元素。这意味着该元素只存在于客户端的曲折文中:假定客户端在处置赏罚赏罚前往的元素时瓦解,它将永世损掉落。

关于某些须要更可靠的新闻转达系统的应用法式模范模范,这能够会组成效果。当泛起这类情形时,请检查BRPOPLPUSH敕令,这是BLPOP的一种变体,它在将前往元素前往给客户机之前将其前往的元素添加到目的列表中。

形式:事宜告诉

华夏棋牌应用壅闭列表操作可以挂载不合的壅闭原语。例如,关于某些应用法式模范模范,您能够须要阻挡将元素期待到Redis集中,以便只需将新元素添加到Set中,便可以检索它,而无需经由历程轮询。这将须要SPOP的阻挡版本弗成用,但应用阻挡列表操作,我们可以轻松完成此义务。

应用者会这样做:

LOOP forever
    WHILE SPOP(key) returns elements        ... process elements ...
    END
    BRPOP helper_key
END

在临盆者方面,我们将质朴地应用:

MULTI
SADD key element
LPUSH helper_key x
EXEC
上一篇: 下一篇: