- What's New
- Function Overview
- Service Overview
- Product Bulletin
- Getting Started
-
User Guide
- Process of Using DCS
- Creating a User and Granting DCS Permissions
- Buying a DCS Redis Instance
-
Accessing a DCS Redis Instance
- Configuring Redis Network Connections
- Controlling DCS Redis Access
-
Connecting to Redis on a Client
- Connecting to Redis on redis-cli
- Connecting to Redis on Jedis (Java)
- Connecting to Redis on Lettuce (Java)
- Connecting to Redis on Redisson (Java)
- Connecting to Redis on redis-py (Python)
- Connecting to Redis on go-redis (Go)
- Connecting to Redis on hiredis (C++)
- Connecting to Redis on StackExchange.Redis (C#)
- Connecting to Redis on phpredis (PHP)
- Connecting to Redis on predis (PHP)
- Connecting to Redis on ioredis (Node.js)
- Connecting to Redis on the Console
-
Managing Instances
- Viewing and Modifying Basic Settings of a DCS Instance
- Viewing DCS Background Tasks
- Viewing Client Connection Information of a DCS Instance
- Modifying Configuration Parameters of a DCS Instance
- Configuring DCS Instance Parameter Templates
- Configuring DCS Instance Tags
- Renaming Critical Commands for DCS Instances
- Exporting a DCS Instance List
- Performing a Master/Standby Switchover for a DCS Instance
- Managing DCS Instance Shards and Replicas
- Backing Up or Restoring Instance Data
- Changing an Instance
- Managing Lifecycle of an Instance
- Diagnosing and Analyzing an Instance
- Migrating Instance Data
-
Testing Instance Performance
- Testing Redis Performance Using memtier_benchmark
- Testing Redis Performance Using redis-benchmark
- Comparing redis-benchmark and memtier_benchmark
-
Reference for a Redis Performance Test
- Test Data of Master/Standby DCS Redis 4.0 or 5.0 Instances
- Test Data of Proxy Cluster DCS Redis 4.0 or 5.0 Instances
- Test Data of Redis Cluster DCS Redis 4.0 or 5.0 Instances
- Test Data of Master/Standby DCS Redis 6.0 Instances
- Test Data of Redis Cluster DCS Redis 6.0 Instances
- Test Data of Redis Backup, Restoration, and Migration
- Applying for More DCS Quotas
- Viewing Monitoring Metrics and Configuring Alarms
- Viewing DCS Audit Logs
-
Data Migration Guide
- Overview
- Migration Process
- Migration Solution Notes
- Migrating Data from Self-Hosted Redis to DCS
- Migrating Data Between DCS Instances
- Migration from Another Cloud
- Migrating Data from DCS to Self-Hosted Redis
-
FAQs
- What Should I Consider When Transferring or Operating Data Between Different OSs?
- Can I Migrate Data from a Multi-DB Source Redis Instance to a Cluster DCS Redis Instance?
- What Are the Constraints and Precautions for Migrating Redis Data to a Cluster Instance?
- What Should I Consider for Online Migration?
- Can I Perform Online Migration Without Any Service Interruption?
- What If "Disconnecting timedout slave" and "overcoming of output buffer limits" Are Reported on the Source Instance During Online Migration?
- Why Is Memory of a DCS Redis Instance Unchanged After Data Migration Using Rump, Even If No Error Message Is Returned?
- Why Are Processes Frequently Killed During Data Migration?
- Is All Data in a DCS Redis Instance Migrated During Online Migration?
- Can I Migrate Data to Multiple Target Instances in One Migration Task?
- Why Does Migration Task Creation Fail?
- How Do I Enable the SYNC and PSYNC Commands?
- Why Does Redis Cluster Migration Fail If It Uses Built-in Keys and Cross-Slot Lua Scripts?
- Handling Migration Errors
- Troubleshooting Data Migration Failures
- Can I Migrate Data from a Lower Redis Version to a Higher One?
-
Best Practices
- Serializing Access to Frequently Accessed Resources
- Ranking with Redis
- Implementing Bullet-Screen and Social Comments with DCS
- Merging Game Servers with DCS
- Flashing E-commerce Sales with DCS
- Reconstructing Application System Databases with DCS
- Suggestions on Using Redis
- Redis Client Retry
- Using Nginx for Public Access to Single-node, Master/Standby, or Proxy Cluster DCS Redis Instances
- Using SSH Tunneling for Public Access to a DCS Instance
- Using ELB for Public Access to DCS
- Detecting and Handling Big Keys and Hot Keys
-
API Reference
- Before You Start
- API Overview
- Calling APIs
-
API V2
- Lifecycle Management
- Parameter Management
- Backup and Restoration
-
Cache Analysis
- Creating a Big Key Analysis Task
- Listing Big Key Analysis Tasks
- Querying Big Key Analysis Details
- Deleting a Big Key Analysis Task
- Configuring Automatic Big Key Analysis
- Querying the Configurations of Automatic Big Key Analysis
- Creating a Hot Key Analysis Task
- Listing Hot Key Analysis Tasks
- Querying Hot Key Analysis Details
- Deleting a Hot Key Analysis Task
- Configuring Automatic Hot Key Analysis
- Querying the Configurations of Automatic Hot Key Analysis
-
Data Migration
- Creating a Data Migration Task
- Listing Migration Tasks
- Deleting Data Migration Tasks
- Querying Details of a Data Migration Task
- Stopping a Data Migration Task
- Querying the Progress of an Online Migration Task
- Creating an Online Data Migration Task
- Configuring an Online Data Migration Task
- Stopping Data Migration Tasks
- Stopping Synchronization of a Data Migration Task
- Querying Instance tenant-sync
- Modifying Instance tenant-sync
- Shards and Replicas
- Instance Diagnosis
- Log Management
- Tag Management
- Network Security
- Background Task Management
- Other APIs
- Instance Management
- Permissions Policies and Supported Actions
- Appendix
- SDK Reference
-
FAQs
- Instance Types/Versions
-
Feature
- What Are the CPU Specifications of DCS Instances?
- What Are Shard and Replica Quantities?
- Do DCS Redis Instances Limit the Size of a Key or Value?
- Can I Obtain the Addresses of the Nodes in a Cluster DCS Redis Instance?
- Does DCS for Redis Support Redis Clusters?
- What Are Redis Data Eviction Policies?
- Does DCS for Redis Support Read/Write Splitting?
- Does DCS for Redis Support Multi-DB?
- Does DCS Support External Extensions, Plug-ins, or Modules?
- Do DCS Redis Instances Support Data Persistence? What Is the Impact of Persistence?
- Do DCS Redis Instances Limite Data Quantity?
-
Security
- How Do I Configure a Security Group?
- Why Can't Security Groups Be Configured for DCS Redis 4.0/5.0/6.0 Basic Edition Instances?
- How Can I Secure My DCS Redis Instances?
- Does DCS Support Cross-AZ Deployment?
- Is a Password Required for Accessing an Instance? How Do I Set a Password?
- Sentinel Principle
- Does DCS Support Sentinels?
-
Client and Network Connection
- Troubleshooting Redis Connection Failures
- Does DCS Support Cross-VPC Access?
- Why Is "(error) NOAUTH Authentication required" Displayed When I Access a DCS Redis Instance?
- What Should I Do If Access to DCS Fails After Server Disconnects?
- Why Do Requests Sometimes Time Out in Clients?
- What Should I Do If an Error Is Returned When I Use the Jedis Connection Pool?
- What If "ERR Unsupported CONFIG subcommand" is Displayed in SpringCloud?
- What Can I Do If I Fail to Access a DCS Instance Using Its Domain Name Address?
- What Should Be Noted When Using Redis for Pub/Sub?
- What Can I Do If Error "Cannot assign requested address" Is Returned When I Access Redis Using connect?
- Connection Pool Selection and Recommended Jedis Parameter Settings
- What Can I Do If a Lettuce 6.x Client Is Incompatible with My DCS Instance?
- Should I Use a Domain Name or an IP Address to Connect to a DCS Redis Instance?
- Is the Read-only Address of a Master/Standby Instance Connected to the Master or Standby Node?
-
Redis Usage
- Can I Change the AZ for an Instance?
- Can I Change the VPC and Subnet for a DCS Redis Instance?
- Can I Customize or Change the Port for Accessing a DCS Instance?
- Can I Modify the Connection Addresses for Accessing a DCS Instance?
- Why Does It Take a Long Time to Start a Cluster DCS Instance?
- What Should I Do If an Error Occurs in redis_exporter?
- Does DCS for Redis Provide Backend Management Software?
- Can I Recover Deleted Data of a DCS Instance?
- How Do I Check Redis Memory Usage?
- Why Is the Capacity or Performance of a Shard of a Redis Cluster Instance Overloaded When That of the Instance Is Still Below the Bottleneck?
- Why Does an OOM Error Occur During a Redis Connection?
- What Clients Can I Use for Redis Cluster in Different Programming Languages?
- Why Do I Need to Configure Timeout for Redis Cluster?
- Why Am I Seeing a Timeout Error When Reading Data from Redis?
- Explaining and Using Hash Tags
- Why Does a Key Disappear in Redis?
- Will Cached Data Be Retained After an Instance Is Restarted?
- How Do I Know Whether an Instance Is Single-DB or Multi-DB?
- Notes and Procedure for Enabling Multi-DB for Proxy Cluster Instances
- How Do I Create a Multi-DB Proxy Cluster Instance?
-
Instance Scaling and Upgrade
- Can I Upgrade Version for a DCS Redis Instance, for Example, from Redis 4.0 to Redis 5.0?
- Are Services Interrupted If Maintenance is Performed During the Maintenance Time Window?
- Are DCS Instances Stopped or Restarted During Specification Modification?
- What DCS Instance Type Changes Are Supported?
- Are Services Interrupted During Specification Modification?
- Why Do I Fail to Modify the Specifications for a DCS Instance?
- How Do I Reduce the Capacity of a DCS Instance?
- How Do I Add Shards to a Cluster DCS Redis Instance Without Changing the Memory?
- How Do I Handle an Error When I Use Lettuce to Connect to a Redis Cluster Instance After Specification Modification?
- Can I Expand a Single Shard of a Cluster Instance (Scale-Up)?
-
Data Backup, Export, and Migration
- Can I Migrate Data from a Lower Redis Version to a Higher One?
- What Should I Consider When Transferring or Operating Data Between Different OSs?
- Can I Migrate Data from a Multi-DB Source Redis Instance to a Cluster DCS Redis Instance?
- What Are the Constraints and Precautions for Migrating Redis Data to a Cluster Instance?
- What Should I Consider for Online Migration?
- Can I Perform Online Migration Without Any Service Interruption?
- What If "Disconnecting timedout slave" and "overcoming of output buffer limits" Are Reported on the Source Instance During Online Migration?
- How Do I Export DCS Redis Instance Data?
- Why Is Memory of a DCS Redis Instance Unchanged After Data Migration Using Rump, Even If No Error Message Is Returned?
- Where Are DCS Instance Backup Files Stored? How Many of Them Can Be Stored?
- Is All Data in a DCS Redis Instance Migrated During Online Migration?
- When Will AOF Rewrites Be Triggered?
- What Are the Common Causes of Redis Migration Failures?
- Can I Migrate Data to Multiple Target Instances in One Migration Task?
- How Do I Enable the SYNC and PSYNC Commands?
- Will the Same Keys Be Overwritten During Data Migration or Backup Import?
- Why Does Redis Cluster Migration Fail If It Uses Built-in Keys and Cross-Slot Lua Scripts?
- Handling Migration Errors
- Troubleshooting Data Migration Failures
-
Big/Hot Key Analysis
- What Are Big Keys and Hot Keys?
- What Is the Impact of Big Keys or Hot Keys?
- How Do I Avoid Big Keys and Hot Keys?
- How Do I Detect Big Keys and Hot Keys in Advance?
- How Does DCS Delete Expired Keys?
- How Long Are Keys Stored? How Do I Set Key Expiration?
- Why Does Memory Usage Decrease After Big Key Analysis Is Performed on Redis?
-
Redis Commands
- Does DCS for Redis Support Command Audits?
- How Do I Clear Redis Data?
- How Do I Find Specified Keys and Traverse All Keys?
- Why Do I Fail to Execute Some Redis Commands?
- Why is "permission denied" Returned When I Run the KEYS Command in Web CLI?
- How Do I Rename High-Risk Commands?
- Does DCS for Redis Support Pipelining?
- Does DCS for Redis Support the INCR and EXPIRE Commands?
- Why Does a Redis Command Fail to Take Effect?
- Is There a Time Limit on Executing Redis Commands? What Will Happen If a Command Times Out?
- Can I Configure Redis Keys to Be Case-Insensitive?
- Common Web CLI Errors
-
Monitoring and Alarm
- Why Is CPU Usage of a DCS Redis Instance 100%?
- How Do I View Current Concurrent Connections and Maximum Connections of a DCS Redis Instance?
- What Should I Do If the Monitoring Data of a DCS Redis Instance Is Abnormal?
- Why Is Used Memory Greater Than Available Memory?
- Why Does Bandwidth Usage Exceed 100%?
- Why Is the Rejected Connections Metric Displayed?
- Why Is Flow Control Triggered? How Do I Handle It?
- Master/Standby Switchover
- Instance Creation and Permissions
- Troubleshooting
- Videos
Self-Hosted Redis Migration with redis-cli (RDB)
redis-cli is the command line tool of Redis, which can be used after you install the Redis server. redis-cli supports data export as an RDB file. If your Redis service does not support AOF file export, use redis-cli to obtain an RDB file. Then, use another tool (such as redis-shake) to import the file to a DCS instance.
Migrate data during off-peak hours.
Notes and Constraints
- When the source is Redis native cluster data, individually export the data of each node in the cluster, and then import the data node by node.
Prerequisites
- If a target DCS Redis instance is not available, create one first. For details, see Buying a DCS Redis Instance.
- If you already have a DCS Redis instance, you do not need to create one again. For comparing migration data and reserving sufficient memory, you are advised to clear the instance data before the migration. For details, see Clearing DCS Instance Data. If any data exists on the target instance, duplicate data between the source and target is overwritten. If the data exists only on the target instance, the data will be retained.
- An Elastic Cloud Server (ECS) has been created. For details about how to create an ECS, see Purchasing an ECS.
- The source self-hosted Redis instance must support the SYNC command. Otherwise, the RDB file cannot be exported using redis-cli.
Exporting the RDB File
- Prepare for the export.
For master/standby or cluster DCS instances, there is a delay in writing data into an RDB file based on the delay policies configured in the redis.conf file. Before data export, learn the RDB policy configurations of the Redis instance to be migrated, suspend your service systems, and then write the required number of test data into the Redis instance. This ensures that the RDB file is newly generated.
For example, the default RDB policy configurations in the redis.conf file are as follows:
save 900 1 //Writes changed data into an RDB file if there is any data change within 900s. save 300 10 //Writes changed data into an RDB file if there are more than 10 data changes within 300s. save 60 10000 //Writes changed data into an RDB file if there are more than 10,000 data changes within 60s.
Based on the preceding policy configurations, after stopping your service systems from writing data into the Redis instances, you can write test data to trigger the policies, so that all service data can be synchronized to the RDB file.
You can delete the test data after data import.
NOTE:
- If there is any DB not used by your service systems, you can write test data into the DB, and run the flushdb command to clear the database after importing data into DCS.
- Compared with master/standby instances, single-node instances without data persistence configured require a longer time for export of an RDB file, because the RDB file is temporarily generated.
- Log in to the ECS.
- Install redis-cli. The following steps assume that your client is installed on the Linux OS.
- Run the following command to download Redis: You can also install other Redis versions. For details, see the Redis official website.
wget http://download.redis.io/releases/redis-5.0.8.tar.gz
- Run the following command to decompress the source code package of your Redis client:
tar -xzf redis-5.0.8.tar.gz
- Run the following commands to go to the Redis directory and compile the source code of your Redis client:
cd redis-5.0.8 make cd src
- Run the following command to download Redis: You can also install other Redis versions. For details, see the Redis official website.
- Run the following command to export the RDB file:
redis-cli -h {source_redis_address} -p {port} -a {password} --rdb {output.rdb}
{source_redis_address} is the connection address of the source Redis, {port} is the port of the source Redis, {password} is the connection password of the source Redis, and {output.rdb} is the RDB file name.
If "Transfer finished with success." is displayed after the command is executed, the file is exported successfully.
Uploading the RDB File to Huawei Cloud ECS
To save time, you are advised to compress the RDB file and upload it to Huawei Cloud ECS using an appropriate mode (for example, SFTP mode).
Ensure that the ECS has sufficient disk space for data file decompression, and can communicate with the DCS instance. Generally, the ECS and DCS instance are configured to belong to the same VPC and subnet, and the configured security group rules do not restrict access ports.
Importing Data
Use redis-shake to import data.
It takes 4 to 10 seconds to import an RDB file of 1 million data (20 bytes per data segment) to a VPC.
Verifying the Migration
After the data is imported successfully, access the DCS instance and run the info command to check whether the data has been successfully imported as required. Connect to Redis by referring to redis-cli.
If the import fails, check the procedure. If the import command is incorrect, run the flushall or flushdb command to clear the cache data in the target instance, modify the import command, and try again.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.