{
  "id": "revamp",
  "title": "Revamp database requests",
  "url": "https://redis.io/docs/latest/operate/rs/8.0/references/rest-api/requests/bdbs/actions/revamp/",
  "summary": "REST API requests to update database configuration and optimize shard placement",
  "content": "\n| Method | Path | Description |\n|--------|------|-------------|\n| [PUT](#put-bdbs-actions-revamp) | `/v1/bdbs/{uid}/actions/revamp` | Update database configuration and optimize shard placement |\n\n## Revamp database {#put-bdbs-actions-revamp}\n\n```sh\nPUT /v1/bdbs/{int: uid}/actions/revamp\n```\n\nUpdates the topology-related configurations of an active database and optimizes the shard placement for the new configuration.\n\n#### Required permissions\n\n| Permission name | Roles |\n|-----------------|-------|\n| [update_bdb_with_action](https://redis.io/docs/latest/operate/rs/references/rest-api/permissions#update_bdb_with_action) | admin\u003cbr /\u003ecluster_member\u003cbr /\u003edb_member |\n\n### Request {#put-request}\n\nYou can include the following parameters in the request JSON body to update their values:\n\n| Field | Type/Value | Description |\n|-------|------------|-------------|\n| avoid_nodes | array of strings | Cluster node UIDs to avoid when placing the database's shards and binding its endpoints. |\n| bigstore_ram_size | integer | Memory size of bigstore RAM part. |\n| memory_size | integer (default: 0) | Database memory limit in bytes. 0 is unlimited. |\n| replication | boolean | If `true`, enable in-memory database replication mode. |\n| shards_count | integer, (range: 1-512) (default: 1) | Number of database server-side shards. |\n| shards_placement | \"dense\"\u003cbr /\u003e\"sparse\" | Control the density of shards. Values:\u003cbr /\u003e**dense**: Shards reside on as few nodes as possible.\u003cbr /\u003e**sparse**: Shards reside on as many nodes as possible. |\n\n#### Example HTTP request\n\n```sh\nPUT /v1/bdbs/1/actions/revamp\n{\n    \"replication\": true,\n    \"shards_count\": 12\n}\n```\n\nDry-run example:\n\n```sh\nPUT /v1/bdbs/1/actions/revamp?dry_run=true\n{\n  \"replication\": true,\n  \"shards_count\": 12\n}\n```\n\n#### URL parameters\n\n| Field | Type | Description |\n|-------|------|-------------|\n| uid | integer | The unique ID of the database to update. |\n\n#### Query parameters\n\n| Field | Type | Description |\n|-------|------|-------------|\n| dry_run | boolean | If true, returns a blueprint of the database update without actually changing the database. Default is false. |\n| pause_persistence | boolean | If true, pause the persistence during the update. Default is false. |\n\n### Response {#put-response}\n\n- If `dry_run` is `false`, returns an `action_uid`. You can track the action's progress with a [`GET /v1/actions/\u003caction_uid\u003e`](https://redis.io/docs/latest/operate/rs/references/rest-api/requests/actions#get-action) request.\n\n- If `dry_run` is `true`, returns a blueprint of the database update.\n\n#### Example response\n\nIf `dry_run` is `false`:\n\n```sh\n{\n  \"action_uid\": \"21ad01d5-55aa-4ec6-b5c0-44dc95176486\"\n}\n```\n\nIf `dry_run` is `true`:\n\n```sh\n[\n  {\n    \"nodes\": [\n      {\n        \"node_uid\": \"3\",\n        \"role\": \"master\"\n      },\n      {\n        \"node_uid\": \"1\",\n        \"role\": \"slave\"\n      }\n    ],\n    \"slot_range\": \"5461-10922\"\n  },\n  {\n    \"nodes\": [\n      {\n        \"node_uid\": \"3\",\n        \"role\": \"master\"\n      },\n      {\n        \"node_uid\": \"1\",\n        \"role\": \"slave\"\n      }\n    ],\n    \"slot_range\": \"10923-16383\"\n  },\n  {\n    \"nodes\": [\n      {\n        \"node_uid\": \"3\",\n        \"role\": \"master\"\n      },\n      {\n        \"node_uid\": \"1\",\n        \"role\": \"slave\"\n      }\n    ],\n    \"slot_range\": \"0-5460\"\n  }\n]\n```\n\n#### Status codes {#put-status-codes}\n\n| Code | Description |\n|------|-------------|\n| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | When `dry_run` is false: The request is accepted and is being processed. The database state will be `active-change-pending` until the request has been fully processed. \u003cbr /\u003eWhen `dry_run` is true: No error. |\n| [404 Not Found](https://www.rfc-editor.org/rfc/rfc9110.html#name-404-not-found) | Attempting to perform an action on a nonexistent database. |\n| [406 Not Acceptable](https://www.rfc-editor.org/rfc/rfc9110.html#name-406-not-acceptable) | The requested configuration is invalid. |\n| [409 Conflict](https://www.rfc-editor.org/rfc/rfc9110.html#name-409-conflict) | Attempting to change a database while it is busy with another configuration change. In this context, this is a temporary condition and the request should be re-attempted later. |\n",
  "tags": ["docs","operate","rs"],
  "last_updated": "2026-07-23T12:05:56-05:00"
}
