{
  "schema_version": 2,
  "id": "commands/brpoplpush",
  "title": "BRPOPLPUSH",
  "url": "https://redis.io/docs/latest/commands/brpoplpush/",
  "summary": "Pops an element from a list, pushes it to another list and returns it. Block until an element is available otherwise. Deletes the list if the last element was popped.",
  "since": "2.2.0",
  "tags": [
    "docs",
    "develop",
    "stack",
    "oss",
    "rs",
    "rc",
    "oss",
    "kubernetes",
    "clients"
  ],
  "last_updated": "2026-09-18T09:47:41+01:00",
  "page_type": "content",
  "content_hash": "85629e9a0a1505b3873be4488ea3d4b9d43df68bd06f6b127947209b1f3bc728",
  "sections": [
    {
      "id": "overview",
      "title": "Overview",
      "role": "overview",
      "text": "> [!NOTE]\n> This command's behavior varies in clustered Redis environments. See the [multi-key operations](https://redis.io/docs/latest/develop/using-commands/multi-key-operations) page for more information.\n\n\n`BRPOPLPUSH` is the blocking variant of [`RPOPLPUSH`](https://redis.io/docs/latest/commands/rpoplpush).\nWhen `source` contains elements, this command behaves exactly like [`RPOPLPUSH`](https://redis.io/docs/latest/commands/rpoplpush).\nWhen used inside a [`MULTI`](https://redis.io/docs/latest/commands/multi)/[`EXEC`](https://redis.io/docs/latest/commands/exec) block or a Lua script, this command behaves exactly like [`RPOPLPUSH`](https://redis.io/docs/latest/commands/rpoplpush).\nWhen `source` is empty, Redis will block the connection until another client\npushes to it or until `timeout` is reached.\nA `timeout` of zero can be used to block indefinitely.\n\nSee [`RPOPLPUSH`](https://redis.io/docs/latest/commands/rpoplpush) for more information."
    },
    {
      "id": "required-arguments",
      "title": "Required arguments",
      "role": "content",
      "text": "<details open><summary><code>source</code></summary>\n\nThe key of the source list.\n\n</details>\n\n<details open><summary><code>destination</code></summary>\n\nThe key of the destination list.\n\n</details>\n\n<details open><summary><code>timeout</code></summary>\n\nThe maximum time to block, in seconds. A timeout of `0` blocks indefinitely.\n\n</details>"
    },
    {
      "id": "details",
      "title": "Details",
      "role": "content",
      "text": ""
    },
    {
      "id": "pattern-reliable-queue",
      "title": "Pattern: reliable queue",
      "role": "content",
      "text": "Please see the pattern description in the [`RPOPLPUSH`](https://redis.io/docs/latest/commands/rpoplpush) documentation."
    },
    {
      "id": "pattern-circular-list",
      "title": "Pattern: circular list",
      "role": "content",
      "text": "Please see the pattern description in the [`RPOPLPUSH`](https://redis.io/docs/latest/commands/rpoplpush) documentation."
    },
    {
      "id": "redis-software-and-redis-cloud-compatibility",
      "title": "Redis Software and Redis Cloud compatibility",
      "role": "content",
      "text": "| Redis<br />Software | Redis<br />Cloud | <span style=\"min-width: 9em; display: table-cell\">Notes</span> |\n|:----------------------|:-----------------|:------|\n| <span title=\"Supported\">&#x2705; Standard</span><br /><span title=\"Supported\"><nobr>&#x2705; Active-Active</nobr></span> | <span title=\"Supported\">&#x2705; Standard</span><br /><span title=\"Supported\"><nobr>&#x2705; Active-Active</nobr></span> | Deprecated as of Redis v6.2.0. |"
    },
    {
      "id": "return-information",
      "title": "Return information",
      "role": "returns",
      "text": "**RESP2:**\n\nOne of the following:\n* [Bulk string reply](../../develop/reference/protocol-spec#bulk-strings): the element being popped from _source_ and pushed to _destination_.\n* [Nil reply](../../develop/reference/protocol-spec#bulk-strings): the timeout is reached.\n\n**RESP3:**\n\nOne of the following:\n* [Bulk string reply](../../develop/reference/protocol-spec#bulk-strings): the element being popped from _source_ and pushed to _destination_.\n* [Null reply](../../develop/reference/protocol-spec#nulls): the timeout is reached."
    }
  ],
  "examples": []
}
