- 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
Troubleshooting High CPU Usage of a DCS Redis Instance
Symptom
The CPU usage of a Redis instance increases dramatically within a short period of time. If the CPU usage is too high, connections may time out, and master/standby switchover may be triggered.
Possible Causes
- The service QPS is high. In this case, refer to Checking QPS.
- Resource-consuming commands, such as KEYS, were used. In this case, refer to Locating and Disabling CPU-Intensive Commands.
- Redis rewrite was triggered. In this case, refer to Checking Redis Rewrite.
Checking QPS
On the Cache Manager page of the DCS console, click an instance to go to the instance details page. On the left menu, choose Performance Monitoring and then view the Ops per Second metric.
If the QPS is high, optimize customer services or modifying instance specifications. For details about the QPS supported by different instance specifications, see DCS Instance Specifications.
Locating and Disabling CPU-Intensive Commands
Resource-consuming commands (commands with time complexity O(N) or higher), such as KEYS, are used. Generally, the higher the time complexity, the more resources a command uses. As a result, the CPU usage is high, and a master/standby switchover can be easily triggered. For details about the time complexity of each command, visit the Redis official website. In this case, use the SCAN command instead or disable the KEYS command.
- On the Performance Monitoring page of the DCS console, locate the period when the CPU usage is high.
- Use the following methods to find the commands that consume a large number of resources.
- Redis logs queries that exceed a specified execution duration. You can find the commands that consume a large number of resources by analyzing the slow queries and their execution duration. For details, see Viewing Redis Slow Queries.
- Use the instance diagnosis function to analyze the execution duration percentage of different commands during the period when the CPU usage is high. For details, see Diagnosing an Instance.
- Resolve the problem.
- Evaluate and disable high-risk and high-consumption commands, such as FLUSHALL, KEYS, and HGETALL.
- Optimize services. For example, avoid frequent data sorting operations.
- (Optional) Perform the following operations to adjust instances based on service requirements:
- Change the instance type to read/write splitting to separate read and write requests from high-consumption commands or applications.
- Scale up the instance.
Checking Redis Rewrite
AOF persistence, which is enabled by default for master/standby and cluster DCS Redis instances, takes place in the following scenarios:
- If a small amount of data is written and the AOF file is not large, AOF rewrite is performed from 01:00 to 04:00 in the morning every day, and CPU usage may suddenly spike during this period.
- When a large amount of data is written and the AOF file size exceeds the threshold (three to five times the DCS instance capacity), AOF rewrite is automatically triggered in the background regardless of the current time.
Redis rewrite is performed by running the BGSAVE or BGREWRITEAOF command, which may consume many CPU resources (see the discussion). BGSAVE and BGREWRITEAOF commands need to fork(), resulting in CPU usage spikes within a short period of time.
If persistence is not required, disable it by changing the value of appendonly to no on the Parameters page of the instance. However, if you disable persistence, data loss may occur due to a lack of data flushing to disk in extreme situations.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.