Skip to main content

When cluster mode is disabled

The following APIs are available when cluster mode is set to disabled.

caution
  • The value of the user.password field must be encrypted in order to be successfully created.

Create instance set

Create new instance set

Create a new instance set.

Request
Create instance set Request Syntax
curl -X POST "https://redis.kr-central-2.kakaocloud.com/v1/instance-sets" \
-H "X-Auth-Token: {token-id}" \
-H "Content-Type: application/json" \
-d '{Body}'
TypeParameterData TypeDescription
Header{token-id}*StringRefer to API authentication token
Content-Type*StringContent type, default: application/json
BodydescriptionStringDescription of the instance set
- Max 100 characters
- Emojis not allowed
- Line breaks (CR, LF) not allowed
replicas*IntegerTotal number of nodes
- Includes both primary and replicas
flavorId*StringFlavor ID
instanceSetName*StringName of the instance set
- 4–20 characters
- Only lowercase letters, numbers, and - allowed
- Cannot start or end with -, nor have consecutive -s
- Must start with a letter and end with a letter or number
- No spaces allowed
recoveryEnabled*BooleanEnable high availability mode
- true: enabled
- false: disabled
subnets[]*Object ArrayList of deployable subnets
subnets[].id*StringSubnet ID
- Found in Console > VPC > Subnet
subnetAssignments[]*Object ArraySubnet placement settings
- Only subnets listed in the subnets field can be used
subnetAssignments[].primary*ObjectSubnet to deploy the primary node
subnetAssignments[].primary.id*StringID of the subnet for the primary node
subnetAssignments[].replicas[]*Object ArraySubnets to deploy replica nodes
subnetAssignments[].replicas[].id*StringID of the subnet for replica nodes
securityGroups[]*Object ArrayList of security groups to connect to the instance set
securityGroups[].id*StringSecurity group ID
- Found in Console > VPC > Security Group
backupScheduleObjectAutomatic backup policy
- If omitted, automatic backup will not be enabled
backupSchedule.cronStringCron expression for the backup schedule
- Only hour values are allowed
- Use a 5-part cron format (e.g., * 1 * * * = daily backup at 1AM KST)
- Only values between 0–23 allowed for hour
- All other fields must be *
backupSchedule.retentionLimitIntegerRetention period for backups (in days)
- Min 1 day, max 35 days
userObjectDatabase user credentials
- Used to access the DB
user.nameStringUsername for the database
user.passwordStringEncrypted or hashed password
How to encrypt DB user password
tlsEnabledBooleanEnable TLS
parameterGroupId*StringParameter group ID to be applied to the instance set
port*IntegerRedis port
- Must be between 2000 and 50000
projectId*StringProject ID
version*StringRedis version
- Supported versions when cluster mode is disabled: 7.2.7, 7.2.6, 7.0.15, 6.2.17, 6.2.16, 6.2.5, 5.0.6
Create instance set Request Body Example
{
"description": "mars-test-description",
"replicas": 3,
"flavorId": "3830ebad-ea2f-4822-8a7d-9e301c86a58d",
"instanceSetName": "mars-repl-test",
"recoveryEnabled": true,
"subnets": [
{"id": "xxxxxxxx-0a69-4f8b-b56d-59ce12b4d55b"},
{"id": "yyyyyyyy-0a69-4f8b-b56d-59ce12b4d55b"}
],
"subnetAssignments": [
{
"primary": {"id": "xxxxxxxx-0a69-4f8b-b56d-59ce12b4d55b"},
"replicas": [
{"id": "yyyyyyyy-0a69-4f8b-b56d-59ce12b4d55b"},
{"id": "yyyyyyyy-0a69-4f8b-b56d-59ce12b4d55b"}
]
}
],
"securityGroups": [
{"id": "abcdxxxx-4870-4c4e-a267-2de13e38c2ea"},
{"id": "qwergggg-4870-4c4e-a267-2de13e38c2ea"}
],
"backupSchedule": {
"cron": "* 1 * * *",
"retentionLimit": 30
},
"tlsEnabled": false,
"parameterGroupId": "bbbbcccc-1234-1234-5678-e705e91db2fb",
"port": "{port-env}",
"projectId": "{project-id-env}",
"version": "{version-env}"
}
Response
Status CodeDescription
201Successfully created resource
400The request is invalid and cannot be processed
401Request made by an unauthenticated user
422Valid request syntax but cannot be processed
403Request made by a user without permission
409Duplicate request due to current server state
500Internal server error preventing the operation
FieldTypeDescription
objectIdStringInstance set ID
Create instance set Response Example
201 Created
content-length: 52
content-type: application/json; charset=UTF-8

{
"objectId": "xxxxxxxx-7347-4d87-a49f-e705e91db2fb"
}

Create instance set from existing backup

Restore an instance set using an existing backup name.

info

You can only restore using a backup with the same cluster mode, and the Redis engine version must be equal to or higher than that of the backup.

caution

If the cache size of the source backup exceeds 60% of the memory size of the target flavor, the restoration may fail.

Request
Create instance set Request Syntax
curl -X POST "https://redis.kr-central-2.kakaocloud.com/v1/instance-sets" \
-H "X-Auth-Token: {token-id}" \
-H "Content-Type: application/json" \
-d '{Body}'
TypeParameterData TypeDescription
Header{token-id}*StringRefer to API authentication token
Content-Type*StringContent type, default: application/json
BodydescriptionStringDescription of the instance set
- Max 100 characters
- Emojis not allowed
- Line breaks (CR, LF) not allowed
replicas*IntegerTotal number of nodes
- Includes both primary and replicas
flavorId*StringFlavor ID
instanceSetName*StringName of the instance set
- 4–20 characters
- Only lowercase letters, numbers, and - allowed
- Cannot contain consecutive -, start with a non-letter, or end with a non-letter/number
- No spaces allowed
recoveryEnabled*BooleanEnable high availability mode
- true: enabled
- false: disabled
subnets[]*Object ArrayList of deployable subnets
subnets[].id*StringSubnet ID
- Found in Console > VPC > Subnet
subnetAssignments[]*Object ArraySubnet placement settings
- Only subnets listed in the subnets field can be used
subnetAssignments[].primary*ObjectSubnet to deploy the primary node
subnetAssignments[].primary.id*StringID of the subnet for the primary node
subnetAssignments[].replicas[]*Object ArraySubnets to deploy replica nodes
subnetAssignments[].replicas[].id*StringID of the subnet for replica nodes
securityGroups[]*Object ArrayList of security groups to connect to the instance set
securityGroups[].id*StringSecurity group ID
- Found in Console > VPC > Security Group
restoreSourceObjectInformation of the backup to restore
restoreSource.backupNameStringName of one backup from MemStore
backupScheduleObjectAutomatic backup policy
- If omitted, automatic backup will not be enabled
backupSchedule.cronStringCron expression for the backup schedule
- Only hour values are allowed
- Use a 5-part cron format (e.g., * 1 * * * = daily backup at 1AM KST)
- Only values between 0–23 allowed for hour
- All other fields must be *
backupSchedule.retentionLimitIntegerRetention period for backups (in days)
- Min 1 day, max 35 days
userObjectDatabase user credentials
- Used to access the DB
user.nameStringUsername for the database
user.passwordStringEncrypted or hashed password
How to encrypt DB user password
tlsEnabledBooleanEnable TLS
parameterGroupId*StringParameter group ID to be applied to the instance set
port*IntegerRedis port
- Must be between 2000 and 50000
projectId*StringProject ID
version*StringRedis version
- Supported versions when cluster mode is disabled: 7.2.7, 7.2.6, 7.0.15, 6.2.17, 6.2.16, 6.2.5, 5.0.6
Create instance set Request Body Example
{
"description": "mars-test-description",
"replicas": 3,
"flavorId": "3830ebad-ea2f-4822-8a7d-9e301c86a58d",
"instanceSetName": "mars-repl-test",
"recoveryEnabled": true,
"subnets": [
{"id": "xxxxxxxx-0a69-4f8b-b56d-59ce12b4d55b"},
{"id": "yyyyyyyy-0a69-4f8b-b56d-59ce12b4d55b"}
],
"subnetAssignments": [
{
"primary": {"id": "xxxxxxxx-0a69-4f8b-b56d-59ce12b4d55b"},
"replicas": [
{"id": "yyyyyyyy-0a69-4f8b-b56d-59ce12b4d55b"},
{"id": "yyyyyyyy-0a69-4f8b-b56d-59ce12b4d55b"}
]
}
],
"securityGroups": [
{"id": "abcdxxxx-4870-4c4e-a267-2de13e38c2ea"},
{"id": "qwergggg-4870-4c4e-a267-2de13e38c2ea"}
],
"restoreSource": {
"backupName": "scheduled.testhen.2024-02-27-16-47.KST"
},
"backupSchedule": {
"cron": "* 1 * * *",
"retentionLimit": 30
},
"tlsEnabled": false,
"parameterGroupId": "bbbbcccc-1234-1234-5678-e705e91db2fb",
"port": "{port-env}",
"projectId": "{project-id-env}",
"version": "{version-env}"
}
Response
Status CodeDescription
201Successfully created resource
400The request is invalid and cannot be processed
401Request made by an unauthenticated user
403Request made by a user without permission
409Duplicate request due to current server state
500Internal server error preventing the operation
FieldTypeDescription
objectIdStringInstance set ID
Create instance set Response Example
201 Created
content-length: 52
content-type: application/json; charset=UTF-8

{
"objectId": "xxxxxxxx-7347-4d87-a49f-e705e91db2fb"
}

Create instance set from Object Storage file

Restore an instance set using a backup file from Object Storage.

caution

If the API authentication token expires while fetching the backup file from Object Storage during the restoration request, the operation may fail. Also, if the Redis memory size of the backup file exceeds 60% of the target flavor’s memory, the instance set may not be restored successfully.

Request
Create instance set Request Syntax
curl -X POST "https://redis.kr-central-2.kakaocloud.com/v1/instance-sets" \
-H "X-Auth-Token: {token-id}" \
-H "Content-Type: application/json" \
-d '{Body}'
TypeParameterData TypeDescription
Header{token-id}*StringRefer to API authentication token
Content-Type*StringContent type, default: application/json
BodydescriptionStringDescription of the instance set
- Max 100 characters
- Emojis not allowed
- Line breaks (CR, LF) not allowed
replicas*IntegerTotal number of nodes (including primary and replicas)
flavorId*StringFlavor ID
instanceSetName*StringName of the instance set
- 4–20 characters
- Only lowercase letters, numbers, and - allowed
- Cannot contain consecutive -, must start with a letter and end with a letter/number
- No spaces allowed
recoveryEnabled*BooleanHigh availability mode
- true: enabled
- false: disabled
subnets[]*Object ArrayList of deployable subnets
subnets[].id*StringSubnet ID
- Found in Console > VPC > Subnet
subnetAssignments[]*Object ArraySubnet placement settings
- Must use subnets listed in the subnets field
subnetAssignments[].primary*ObjectSubnet to deploy the primary node
subnetAssignments[].primary.id*StringID of the subnet for the primary node
subnetAssignments[].replicas[]*Object ArraySubnets to deploy replica nodes
subnetAssignments[].replicas[].id*StringID of the subnet for replica nodes
securityGroups[]*Object ArrayList of security groups to connect to the instance set
securityGroups[].id*StringSecurity group ID
- Found in Console > VPC > Security Group
restoreSourceObjectRestore source information
restoreSource.files[]String ArrayPath(s) of user backup file(s) in Object Storage
- Must belong to a bucket within the same region/project and grant edit permission
- Format: bucket/folder/.../file
- Can only restore with an engine version equal to or higher than the one used for backup
backupScheduleObjectAutomatic backup policy
- If omitted, automatic backup will not be enabled
backupSchedule.cronStringCron expression for backup schedule
- Only hour values are allowed
- 5-part cron format (e.g., * 1 * * * = daily backup at 1AM KST)
- Hour must be 0–23 (special characters not allowed)
- Other fields must be *
backupSchedule.retentionLimitIntegerRetention period for backups (in days)
- Min 1 day, max 35 days
userObjectDatabase user credentials
- Used to access the DB
user.nameStringDatabase username
user.passwordStringEncrypted or hashed password
How to encrypt DB user password
tlsEnabledBooleanEnable TLS
parameterGroupId*StringParameter group ID to apply to the instance set
port*IntegerRedis port (2000–50000)
projectId*StringProject ID
version*StringRedis version
- Supported versions when cluster mode is disabled: 7.2.7, 7.2.6, 7.0.15, 6.2.17, 6.2.16, 6.2.5, 5.0.6
Create instance set Request Body Example
{
"description": "mars-test-description",
"replicas": 3,
"flavorId": "3830ebad-ea2f-4822-8a7d-9e301c86a58d",
"instanceSetName": "mars-repl-test",
"recoveryEnabled": true,
"subnets": [
{"id": "xxxxxxxx-0a69-4f8b-b56d-59ce12b4d55b"},
{"id": "yyyyyyyy-0a69-4f8b-b56d-59ce12b4d55b"}
],
"subnetAssignments": [
{
"primary": {"id": "xxxxxxxx-0a69-4f8b-b56d-59ce12b4d55b"},
"replicas": [
{"id": "yyyyyyyy-0a69-4f8b-b56d-59ce12b4d55b"},
{"id": "yyyyyyyy-0a69-4f8b-b56d-59ce12b4d55b"}
]
}
],
"securityGroups": [
{"id": "abcdxxxx-4870-4c4e-a267-2de13e38c2ea"},
{"id": "qwergggg-4870-4c4e-a267-2de13e38c2ea"}
],
"restoreSource": {
"files": ["bucket/path-to-file"]
},
"backupSchedule": {
"cron": "* 1 * * *",
"retentionLimit": 30
},
"tlsEnabled": false,
"parameterGroupId": "bbbbcccc-1234-1234-5678-e705e91db2fb",
"port": "{port-env}",
"projectId": "{project-id-env}",
"version": "{version-env}"
}
Response
Status CodeDescription
201Successfully created resource
400The request is invalid and cannot be processed
401Request made by an unauthenticated user
403Request made by a user without permission
409Duplicate request due to current server state
500Internal server error preventing the operation
FieldTypeDescription
objectIdStringInstance set ID
Create instance set Response Example
201 Created
content-length: 52
content-type: application/json; charset=UTF-8

{
"objectId": "xxxxxxxx-7347-4d87-a49f-e705e91db2fb"
}

Delete instance set

Delete an instance set.
If the instance set has existing automatic backups, deletion may not be possible via the console. In that case, include the keepAutomaticBackups parameter in the API request to delete it.

Request
Delete instance set Request Syntax
curl -X DELETE "https://redis.kr-central-2.kakaocloud.com/v1/instance-sets/{instance-set-id}?keepAutomaticBackups={keep-auto-backup}" \
-H "X-Auth-Token: {token-id}"
TypeParameterData TypeDescription
Header{token-id}*StringRefer to API authentication token
URL{instance-set-id}*StringInstance set ID
Query{keep-auto-backup}BooleanWhether to retain automatic backups
- Required if automatic backups exist
- true: Retains automatic backups; they will be deleted on their set expiration date
- false: Deletes automatic backups together with the instance set
Response
Status CodeDescription
200Success response for retrieving or deleting the resource
400The request is invalid and cannot be processed
401Request made by an unauthenticated user
403Request made by a user without permission
404Requested resource does not exist
500Internal server error preventing the operation
FieldTypeDescription
objectIdStringInstance set ID
Delete instance set Response Example
200 OK
content-length: 52
content-type: application/json; charset=UTF-8

{
"objectId": "aabbccdd-a1d4-465b-8009-1d272bcc2db7"
}

Update instance set

Update the automatic backup policy, linked parameter group, or security group for an instance set.

Request
Update instance set Request Syntax
curl -X PATCH "https://redis.kr-central-2.kakaocloud.com/v1/instance-sets/{instance-set-id}" \
-H "X-Auth-Token: {token-id}" \
-d '{Body}'
TypeParameterData TypeDescription
Header{token-id}*StringRefer to API authentication token
URL{instance-set-id}*StringInstance set ID
BodybackupScheduleObjectBackup schedule configuration
backupSchedule.cronStringCron expression for backup schedule
- Only time can be specified
- Use 5-part cron format
- To disable backup, set value to ""
backupSchedule.retentionLimitIntegerBackup retention period (days)
descriptionStringInstance set description
parameterGroupIdStringParameter group ID to be linked with the instance set
- Cannot be updated to an empty string ""
securityGroups[]Object ArrayList of updated security group IDs
securityGroups[].idStringSecurity group ID
Update instance set Request Body Example
{
"backupSchedule": {
"cron": "* 3 * * *",
"retentionLimit": 15
},
"description": ""
}
Response
Status CodeDescription
200Success response for retrieving or deleting the resource
400The request is invalid and cannot be processed
401Request made by an unauthenticated user
403Request made by a user without permission
404Requested resource does not exist
500Internal server error preventing the operation
FieldTypeDescription
objectIdStringInstance set ID
Update instance set Response Example
200 OK
content-length: 52
content-type: application/json; charset=UTF-8

{
"objectId": "aabbccdd-a1d4-465b-8009-1d272bcc2db7"
}

Retrieve instance list of instance set

Retrieve the list of instances (nodes) in a specific instance set.

Request
Retrieve instance list Request Syntax
curl -X GET "https://redis.kr-central-2.kakaocloud.com/v1/instance-sets/{instance-set-id}/instances" \
-H "X-Auth-Token: {token-id}"
TypeParameterData TypeDescription
URL{instance-set-id}*StringInstance set ID
Header{token-id}*StringRefer to API authentication token
Response
Status CodeDescription
200Success response for retrieving or deleting the resource
400The request is invalid and cannot be processed
401Request made by an unauthenticated user
403Request made by a user without permission
500Internal server error preventing the operation
FieldTypeDescription
sizeIntegerNumber of instances
data[]Object ArrayList of instances
data[].instanceNameStringName of the instance
data[].descriptionStringDescription of the instance set
data[].projectIdStringProject ID
data[].roleStringInstance role (primary / replica)
data[].flavorIdStringFlavor ID
data[].versionStringRedis version
data[].portIntegerRedis port number
data[].subnetObjectAssigned subnet information
data[].subnet.idStringSubnet ID
data[].creatorStringCreator of the instance set
data[].objectIdStringInstance ID
data[].endpointStringInstance endpoint (private IP)
data[].licenseStringLicense
data[].createdAtStringCreation time (RFC3339)
data[].statusStringInstance status (e.g., PROVISIONING, FAILED)
Retrieve instance list Response Example
200 OK
content-type: application/json; charset=UTF-8

{
"size": 2,
"data": [
{
"instanceName": "test-instance-set-1",
"description": "test",
"projectId": "abcdabcdf4d14b41a36823e2091c3a6d",
"flavorId": "xxxxxxxx-ea2f-4822-8a7d-9e301c86a58d",
"version": "6.2.5",
"port": 6379,
"subnet": {
"id": "qqqqwwww-2726-432e-aa37-04b778ef2ba1"
},
"creator": "ms@kakaoenterprise.com",
"objectId": "abcdefg-a97a-59c8-9e6a-e967383c65e2",
"role": "primary",
"endpoint": "172.30.1.244",
"license": "GPL",
"createdAt": "2024-03-11T01:15:03Z",
"status": "Running"
},
{
"instanceName": "test-instance-set-2",
"description": "test",
"projectId": "abcdabcdf4d14b41a36823e2091c3a6d",
"flavorId": "xxxxxxxx-ea2f-4822-8a7d-9e301c86a58d",
"version": "6.2.5",
"port": 6379,
"subnet": {
"id": "qqqqwwww-2726-432e-aa37-04b778ef2ba1"
},
"creator": "ms@kakaoenterprise.com",
"objectId": "abcdefg-39c8-55c2-b4d3-9009c554d102",
"role": "replica",
"endpoint": "172.30.0.67",
"license": "GPL",
"createdAt": "2024-03-11T01:15:03Z",
"status": "Running"
}
]
}

Delete instance from instance set

Delete a specific instance (node) from an instance set.

  • If high availability mode is enabled, the primary instance cannot be deleted.
  • If high availability mode is enabled, only instances in the Running state can be deleted.
  • If high availability mode is not enabled, the primary instance can only be deleted when it is in the Failed state.
  • If the instance set has an active automatic backup policy and contains only two nodes, deletion is not allowed.
Request
Delete instance Request Syntax
curl -X DELETE "https://redis.kr-central-2.kakaocloud.com/v1/instance-sets/{instance-set-id}/instances/{instance-id}" \
-H "X-Auth-Token: {token-id}"
TypeParameterData TypeDescription
URL{instance-set-id}*StringInstance set ID
{instance-id}*StringInstance ID
Header{token-id}*StringRefer to API authentication token
Response
Status CodeDescription
200Success response for retrieving or deleting the resource
400The request is invalid and cannot be processed
401Request made by an unauthenticated user
403Request made by a user without permission
404Requested resource does not exist
500Internal server error preventing the operation
FieldTypeDescription
objectIdStringInstance set ID
Delete instance Response Example
200 OK
content-length: 52
content-type: application/json; charset=UTF-8

{
"objectId": "aaaabbbb-a1d4-465b-8009-1d272bcc2db7"
}

Promote replica to primary

Promote a specific replica to primary. This operation is only available when high availability mode is disabled.

Request
Promote replica to primary Request Syntax
curl -X PATCH "https://redis.kr-central-2.kakaocloud.com/v1/instance-sets/{instance-set-id}/primary" \
-H "X-Auth-Token: {token-id}" \
-H "Content-Type: application/json" \
-d '{Body}'
TypeParameterData TypeDescription
URL{instance-set-id}*StringInstance set ID
Header{token-id}*StringRefer to API authentication token
Content-Type*StringDefault content type: application/json
BodyprimaryId*StringID of the replica instance to promote to primary
Promote replica to primary Request Body Example
{
"primaryId": "instance-idid-xxxx-a49f-e705e91db2fb"
}
Response
Status CodeDescription
200Success response for resource update
400The request is invalid and cannot be processed
401Request made by an unauthenticated user
403Request made by a user without permission
404Requested resource does not exist
500Internal server error preventing the operation
FieldTypeDescription
objectIdStringInstance set ID
Promote replica to primary Response Example
200 OK
content-length: 52
content-type: application/json; charset=UTF-8

{
"objectId": "bbccxxzz-7347-4d87-a49f-e705e91db2fb"
}

Add instance

Add one replica instance. You can create up to 5 replicas per instance set.

Request
Add instance Request Syntax
curl -X PATCH "https://redis.kr-central-2.kakaocloud.com/v1/instance-sets/{instance-set-id}/replicas" \
-H "X-Auth-Token: {token-id}" \
-H "Content-Type: application/json" \
-d '{Body}'
TypeParameterData TypeDescription
URL{instance-set-id}*StringInstance set ID
Header{token-id}*StringRefer to API authentication token
Content-Type*StringDefault content type: application/json
Bodysubnet*ObjectSubnet information for placement
subnet.id*StringSubnet ID
Add instance Request Body Example
{
"subnet": { "id": "xxxxxxxx-0a69-4f8b-b56d-59ce12b4d55b" }
}
Response
Status CodeDescription
200Success response for resource update
400The request is invalid and cannot be processed
401Request made by an unauthenticated user
403Request made by a user without permission
404Requested resource does not exist
500Internal server error preventing the operation
FieldTypeDescription
objectIdStringInstance set ID
Add instance Response Example
200 OK
content-length: 52
content-type: application/json; charset=UTF-8

{
"objectId": "qqwweerr-7347-4d87-a49f-e705e91db2fb"
}

Set high availability mode

Enable or disable high availability mode. This operation is only available when the instance set is in the Running status.

Request
Set high availability mode Request Syntax
curl -X PATCH "https://redis.kr-central-2.kakaocloud.com/v1/instance-sets/{instance-set-id}/recovery" \
-H "X-Auth-Token: {token-id}" \
-H "Content-Type: application/json" \
-d '{Body}'
TypeParameterData TypeDescription
URL{instance-set-id}*StringInstance set ID
Header{token-id}*StringRefer to API authentication token
Content-Type*StringDefault content type: application/json
Bodyenabled*BooleanEnable high availability mode
- true: Enable
- false: Disable
Set high availability mode Request Body Example
{
"enabled": true
}
Response
Status CodeDescription
200Success response for resource update
400The request is invalid and cannot be processed
401Request made by an unauthenticated user
403Request made by a user without permission
404Requested resource does not exist
500Internal server error preventing the operation
FieldTypeDescription
objectIdStringInstance set ID
Set high availability mode Response Example
200 OK
content-length: 52
content-type: application/json; charset=UTF-8

{
"objectId": "aassddff-7347-4d87-a49f-e705e91db2fb"
}