- 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
New Features of DCS for Redis 6.0
DCS for Redis 6.0 is compatible with the new features of the open-source Redis 6.0, in addition to all the improvements and commands in Redis 5.0.
RESP3
Redis 6.0 introduced RESP3, the next-generation Redis protocol which implements more data types than RESP2.
- Null: a non-existent value. It replaces RESP2's *-1 and $-1.
- Array: an ordered collection
- Simple string: a space-efficient non-binary safe string
- Blob string: a binary safe string
- Simple error: a space-efficient non-binary safe error code or message
- Blob error: binary safe error code or message
- Boolean: true or false
- Number: a 64-bit signed integer
- Big number: a large number
- Double: a floating point number
- Verbatim string: a binary safe string with a text format
- Map: an unordered collection of key-value pairs
- Set: an unordered collection of non-repeated elements
- Attribute: attribute key-value pairs, similar to Map
- Push: out-of-band data, similar to Array, used by the Redis server to push data to the client.
- Hello: response returned by the HELLO command, sent when the connection between the client and the server is established.
To use RESP3, ensure that the client SDK supports it. Otherwise, the client SDK communicates with the server through HELLO of RESP2.
Client-side Caching
Redis 6.0 uses tracking to proactively instruct clients to refresh their cache. There are three implementation modes:
- Default mode
- Broadcasting mode
- Redirecting mode
Format for enabling client-side cache tracking:
CLIENT TRACKING ON|OFF [REDIRECT client-id] [PREFIX prefix] [BCAST] [OPTIN][OPTOUT] [NOLOOP]
In RESP3, the server uses Push messages to send notifications. In the default mode, Redis remembers the keys requested by each client. When the value of a key changes, Redis sends an invalidation message to notify the corresponding client. Note that Redis notifies each client only once. If the value changes again later, the client must read the key again to enable tracking. To enable tracking in the default mode, use the following command:
CLIENT TRACKING ON
In the broadcasting mode, all clients are notified when the value of the key matching a tracked key prefix changes. If there is large number of keys that match the key prefix or there is large number of changes, the server sends many invalidation messages, consuming much network bandwidth. To enable tracking in the broadcasting mode, use the following command:
CLIENT TRACKING ON BCAST PREFIX key-prefix
If the client SDK does not support RESP3, only the redirecting mode of RESP2 can be used to implement tracking. In this case, a dedicated client that supports RESP3 needs to act as the transit node that redirects invalidation messages from Redis to specific subscription channels.
![Click to enlarge](https://support.huaweicloud.com/eu/dcs_faq/en-us_image_0000001615925652.png)
Faster RDB Loading
In Redis 6.0, the loading of RDB files is optimized for a 20% to 30% increase in speed.
Optimized INFO Command
The processing of the INFO command is optimized, especially in the scenario where a large number of clients are connected, resulting in higher performance and lower latency.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.