Alibaba Cloud Redis (R-KVStore) Skill
Manage Redis and Tair instances via the @alicloud/r-kvstore20150101 TypeScript SDK.
Prerequisites
bash
1npm install @alicloud/r-kvstore20150101 @alicloud/openapi-core @darabonba/typescript
bash
1export ALIBABA_CLOUD_ACCESS_KEY_ID="<your-key-id>"
2export ALIBABA_CLOUD_ACCESS_KEY_SECRET="<your-key-secret>"
See scripts/setup_client.ts for a reusable client factory, and references/quickstart.md for full setup including endpoints, instance types, architectures, Redis versions, pagination, and async polling.
Client Initialization
typescript
1import Client from '@alicloud/r-kvstore20150101';
2import { Config } from '@alicloud/openapi-core';
3
4const client = new Client(new Config({
5 accessKeyId: process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
6 accessKeySecret: process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
7 endpoint: 'r-kvstore.aliyuncs.com',
8 regionId: 'cn-hangzhou',
9}));
API Overview (157 APIs in 8 Domains)
| Domain | APIs | Key Operations | Reference |
|---|
| Instance Management | 82 | createInstance, describeInstances, modifyInstanceSpec | references/instance.md |
| Account Management | 7 | createAccount, grantAccountPrivilege, resetAccountPassword | references/account.md |
| Backup & Recovery | 11 | createBackup, describeBackups, modifyBackupPolicy, restoreInstance | references/backup.md |
| Security & Encryption | 23 | modifySecurityIps, modifyInstanceSSL, modifyInstanceTDE, modifyAuditLogConfig | references/security.md |
| Parameter Management | 11 | describeParameters, createParameterGroup, modifyInstanceParameter | references/parameter.md |
| Monitoring & Performance | 8 | describeHistoryMonitorValues, describeSlowLogRecords | references/monitoring.md |
| Tair Custom Instance | 12 | createTairKVCacheCustomInstance, describeTairKVCacheCustomInstances | references/tair-custom.md |
| Tag & Resource | 5 | tagResources, untagResources, listTagResources | references/tag-resource.md |
Core Patterns
RPC-Style with instanceId
Most APIs require instanceId as the primary identifier:
typescript
1import * as models from '@alicloud/r-kvstore20150101/dist/models';
2
3const { body } = await client.describeInstanceAttribute(
4 new models.DescribeInstanceAttributeRequest({
5 instanceId: 'r-bp1xxxxxxxxxxxxx',
6 })
7);
typescript
1let pageNumber = 1;
2let all: any[] = [];
3while (true) {
4 const { body } = await client.describeInstances(new models.DescribeInstancesRequest({
5 regionId: 'cn-hangzhou', pageSize: 50, pageNumber,
6 }));
7 all.push(...(body.instances?.KVStoreInstance || []));
8 if (all.length >= (body.totalCount || 0)) break;
9 pageNumber++;
10}
Async Operation Polling
Many operations are async — poll instance status until target state:
typescript
1while (true) {
2 const { body } = await client.describeInstanceAttribute(
3 new models.DescribeInstanceAttributeRequest({ instanceId })
4 );
5 const status = body.instances?.DBInstanceAttribute?.[0]?.instanceStatus;
6 if (status === 'Normal') break;
7 await new Promise(r => setTimeout(r, 5000));
8}
Multi-Type Support
R-KVStore supports Redis Community and Tair (DRAM/Persistent Memory/ESSD):
typescript
1// Redis Community
2const { body: redis } = await client.createInstance(new models.CreateInstanceRequest({
3 regionId: 'cn-hangzhou', instanceType: 'Redis', engineVersion: '7.0',
4 instanceClass: 'redis.master.small.default', chargeType: 'PostPaid',
5 password: process.env.REDIS_PASSWORD!, vpcId: 'vpc-xxx', vSwitchId: 'vsw-xxx',
6}));
7
8// Tair (Enhanced Redis)
9const { body: tair } = await client.createTairInstance(new models.CreateTairInstanceRequest({
10 regionId: 'cn-hangzhou', instanceType: 'tair_rdb',
11 instanceClass: 'tair.rdb.2g', chargeType: 'PostPaid',
12 password: process.env.REDIS_PASSWORD!, vpcId: 'vpc-xxx', vSwitchId: 'vsw-xxx',
13}));
Config as JSON String
Instance configuration is passed as a JSON string:
typescript
1await client.modifyInstanceConfig(new models.ModifyInstanceConfigRequest({
2 instanceId,
3 config: JSON.stringify({
4 'maxmemory-policy': 'allkeys-lru',
5 'timeout': '300',
6 }),
7}));
Error Handling
typescript
1try {
2 await client.createInstance(request);
3} catch (err: any) {
4 console.error(`Code: ${err.code}, Message: ${err.message}, RequestId: ${err.data?.RequestId}`);
5}
Common Workflows
1. Create Redis Instance with Account
createInstance → waitForNormal → createAccount → modifySecurityIps
2. Create Tair Cluster
createTairInstance → waitForNormal → describeClusterMemberInfo
3. Backup and Recovery
modifyBackupPolicy → createBackup → describeBackups → restoreInstance
4. Security Hardening
modifySecurityIps → modifyInstanceSSL → modifyInstanceTDE → modifyAuditLogConfig
5. Cluster Scaling
describeClusterMemberInfo → addShardingNode / deleteShardingNode
6. Direct Connection Mode
allocateDirectConnection → describeDBInstanceNetInfo → releaseDirectConnection
7. Parameter Tuning
describeParameterTemplates → createParameterGroup → modifyInstanceParameter
describeMonitorItems → describeHistoryMonitorValues → describeSlowLogRecords → createCacheAnalysisTask
See references/workflows.md for detailed workflow examples with full code.
API Reference Quick Index
Load the corresponding reference file for parameter details:
- Instance CRUD/lifecycle/spec/network/cluster/proxy:
references/instance.md
- Account CRUD/password/privileges:
references/account.md
- Backup/restore/cache analysis:
references/backup.md
- IP whitelist/SSL/TDE/audit/global whitelist:
references/security.md
- Parameters/parameter groups/templates:
references/parameter.md
- Performance monitoring/slow logs/running logs:
references/monitoring.md
- TairKVCache custom instances:
references/tair-custom.md
- Resource tagging:
references/tag-resource.md
Each reference file contains per-API documentation with method signatures and parameter tables.
Code Examples
See scripts/examples.ts for ready-to-use code covering:
- Instance listing, creation, and deletion
- Account management
- Backup creation and listing
- IP whitelist and SSL configuration
- Audit log management
- Performance monitoring and slow log analysis
- Parameter management
- Resource tagging