亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

directory search
Cluster cluster addslots(集群 槽位) cluster count failure reports(集群計數(shù)失敗報告) cluster countkeysinslot cluster delslots cluster failover cluster forget cluster getkeysinslot cluster info cluster keyslot(集群鍵槽) cluster meet cluster nodes(集群節(jié)點) 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
characters

RPOPLPUSH source destination

自1.2.0起可用。

時間復雜度: O(1)

原子返回并移除存儲在列表中的列表的最后一個元素(尾部)source,并按下存儲在列表中第一個元素(頭部)的元素destination。

例如:考慮source拿著清單a,b,c,然后destination拿著清單x,y,z。執(zhí)行RPOPLPUSH導致source持有a,bdestination持有c,x,y,z。

如果source不存在,nil則返回該值并且不執(zhí)行任何操作。如果sourcedestination相同,該操作相當于從列表中刪除最后一個元素,并將其作為列表的第一個元素推入,因此可以將其視為列表旋轉(zhuǎn)命令。

返回值

批量字符串回復:正在彈出和推送的元素。

例子

redis>  RPUSH mylist "one" (integer) 1 

redis>  RPUSH mylist "two" (integer) 2 

redis>  RPUSH mylist "three" (integer) 3 

redis>  RPOPLPUSH mylist myotherlist "three" 

redis>  LRANGE mylist 0 -1 1) "one" 2) "two" 

redis>  LRANGE myotherlist 0 -1 1) "three"

模式:可靠的隊列

Redis通常用作消息傳遞服務器來實現(xiàn)后臺作業(yè)或其他類型的消息傳遞任務的處理。通常可以通過將值推入生產(chǎn)者端的列表中,并使用RPOP(使用輪詢)在消費者端等待此值,或通過阻止操作為客戶端提供更好的服務來實現(xiàn)BRPOP,從而獲得簡單的隊列形式。

然而,在這種情況下,所獲得的隊列是不可靠的,因為可能會丟失消息,例如在存在網(wǎng)絡問題的情況下或消費者在收到消息之后崩潰但仍然要處理的情況下。

RPOPLPUSH(或阻止變體的BRPOPLPUSH)提供了一種避免此問題的方法:消費者提取消息并同時將其推入處理列表。一旦消息已被處理,它將使用LREM命令來從處理列表中刪除消息。

額外的客戶端可能會監(jiān)視處理列表中保留的項目太多時間,并且會在需要時再次將這些超時項目推入隊列中。

模式:循環(huán)列表

使用具有相同源和目標密鑰的RPOPLPUSH,客戶端可以使用單個LRANGE操作在O(N)中一個接一個地訪問N元素列表中的所有元素,而無需使用單個LRANGE操作將完整列表從服務器傳輸?shù)娇蛻舳恕?/p>

即使有以下兩個條件,上述模式仍然有效:

  • 有多個客戶端輪換列表:他們將獲取不同的元素,直到列表中的所有元素都被訪問,并且進程重新啟動。

  • 即使其他客戶在列表末尾積極推出新項目。

上述內(nèi)容使得實現(xiàn)一套系統(tǒng)必須由N名工作人員盡可能快地處理一套物品變得非常簡單。一個例子是一個監(jiān)控系統(tǒng),它必須使用大量的并行工作人員來檢查一組網(wǎng)站是否可以訪問,并盡可能縮短延遲。

請注意,這種工作者的實現(xiàn)是可升級且可靠的,因為即使消息丟失,項目仍然在隊列中,并且將在下一次迭代中處理。

Previous article: Next article: