- What's New
- Function Overview
- Product Bulletin
-
Service Overview
- Infographics for Comparing DCS for Redis with Open-Source Redis
- What Is DCS?
- Application Scenarios
- Security
- DCS Instance Types
- DCS Instance Specifications
-
Command Compatibility
- Commands Supported and Disabled by DCS for Redis 4.0
- Commands Supported and Disabled by DCS for Redis 5.0
- Commands Supported and Disabled by DCS for Redis 6.0
- Commands Supported and Disabled in Web CLI
- Command Restrictions
- Other Command Usage Restrictions
- Commands Supported and Disabled by DCS for Redis 3.0 (Discontinued)
- Commands Supported and Disabled by DCS for Memcached (Discontinued)
- Disaster Recovery and Multi-Active Solution
- Cache Engine Differences
- Comparing DCS and Open-Source Cache Services
- Notes and Constraints
- Billing
- Permissions Management
- Basic Concepts
- Related Services
- Billing
- 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
- Public Access to a DCS Redis 3.0 Instance (Discontinued)
- Accessing a DCS Memcached Instance (Discontinued)
-
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 3.0 Instances
- Test Data of Proxy Cluster DCS Redis 3.0 Instances
- 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
- Best Practices
-
API Reference
- Before You Start
- API Overview
- Calling APIs
- Examples
-
API V2
- Lifecycle Management
-
Instance Management
- Updating a Bandwidth Auto Scaling Policy
- Querying a Bandwidth Auto Scaling Policy
- Deleting a Bandwidth Auto Scaling Policy
- Querying Details of an Instance Parameter Modification Record
- Master/Standby Switchover
- Changing the Password
- Resetting a Password
- Querying DCS Instance Statuses
- Restarting DCS Instances or Clearing DCS Instance Data
- Querying Statistics of All Running Instances
- Enabling or Disabling Client IP Pass-through
- Modifying the Bandwidth of an Instance
- Enabling/Modifying Public Access
- Disabling Public Access to an Instance
- Switching Master/Replica Roles on a Cluster Shard
- Asynchronous Master/Replica Node Switchover
- Querying Whether Specifications of an Instance Can Be Increased
- Obtaining Shard Bandwidth of an Instance
- Modifying Instance Shard Bandwidth
- Asynchronously Exporting Instances
- Starting or Stopping a Specified Instance Node
- Obtaining the Instance Engine Version by Instance ID
- Upgrading the Minor Version of an Instance
- Shards and Replicas
- Parameter Management
- Backup and Restoration
-
Data Migration
- Switching IP
- Creating a Backup Import Task
- Listing Migration Tasks
- Deleting Data Migration Tasks
- Querying Details of a Data Migration Task
- Configuring Auto-Reconnect for Migration Tasks
- 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 the Migration Log List
- Restarting Online Migration Tasks in Batches
- Tag Management
-
Cache Analysis
- Querying Expired Key Scan Records
- Scanning for Expired Keys Immediately
- 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
- Creating an Expired Key Scan Task
- Querying Automatic Scanning Configuration
- Modifying Automatic Scanning Configuration
- Log Management
- Account Management
- Network Security
- Background Task Management
- Instance Diagnosis
- Template Management
- Other APIs
- Session Management
- Permissions Policies and Supported Actions
- Appendix
- Out-of-Date APIs (Unavailable Soon)
- 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 for Redis Support SSL Encrypted Transmission?
- How Do I Enable or Disable SSL for Public Access to a DCS Redis 3.0 Instance?
- 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
- Does DCS Support Public Access?
- Troubleshooting Redis Connection Failures
- Does DCS Support Cross-VPC Access?
- Will I Be Charged for the EIP Used for Public Access to a DCS Redis Instance?
- 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?
- How Do I Access a DCS Redis Instance Through Redis Desktop Manager?
- 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?
- Can I Access DCS Instances in a Local Environment?
- What Should Be Noted When Using Redis for Pub/Sub?
- Why Is Public Access of My DCS Redis 3.0 Instance Unintentionally Disabled?
- 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 CPU Architecture?
- 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 Do I Fail to Delete an 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?
- What Is Reserved Memory? How Do I Configure Reserved Memory?
- Why Is Available Memory Smaller Than Instance Cache Size?
- Why Is Redisson Distributed Lock Not Supported by DCS Proxy Cluster Redis 3.0 Instances?
- Does DCS for Redis Provide Backend Management Software?
- Can I Recover Deleted Data of a DCS Instance?
- Why Is Available Memory of Unused DCS Instances Less Than Total Memory and Why Is Memory Usage of Unused DCS Instances Greater Than Zero?
- 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?
- Upgrading a Redis 3.0 Instance
- 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?
- Can I Export Backup Data of DCS Redis Instances to RDB Files on the Console?
- 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
- How Do I Migrate Memcached Data?
- Can I Migrate Data Between DCS Memcached and Redis Instances?
-
Big/Hot Key Analysis and Expired Key Scan
- 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 Analyze the Hot Keys of a DCS Redis 3.0 Instance?
- 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
-
Memcached Usage
- Can I Dump DCS Memcached Instance Data for Analysis?
- What Memcached Version Is Compatible with DCS for Memcached?
- What Data Structures Does DCS for Memcached Support?
- Does DCS for Memcached Support Public Access?
- Can I Modify Configuration Parameters of DCS Memcached Instances?
- What Are the Differences Between DCS for Memcached and Self-Hosted Memcached?
- What Policies Does DCS for Memcached Use to Deal with Expired Data?
- How Should I Select AZs When Creating a DCS Memcached Instance?
- Troubleshooting
- Videos
-
More Documents
-
User Guide (ME-Abu Dhabi Region)
- Service Overview
- Getting Started
- Operation Guide
- Monitoring
- Auditing
-
FAQs
-
Client and Network Connection
- Security Group Configurations
- Does DCS Support Public Access?
- Does DCS Support Cross-VPC Access?
- 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?
- Why Is "ERR unknown command" Displayed When I Access a DCS Redis Instance Through a Redis Client?
- How Do I Access a DCS Redis Instance Through Redis Desktop Manager?
- What If "ERR Unsupported CONFIG subcommand" is Displayed in SpringCloud?
- How Do I Troubleshoot Redis Connection Failures?
- What Should Be Noted When Using Redis for Pub/Sub?
-
Redis Usage
- Why Is CPU Usage of a DCS Redis Instance 100%?
- Can I Change the VPC and Subnet for a DCS Redis Instance?
- Why Aren't Security Groups Configured for DCS Redis 4.0 and 5.0 Instances?
- 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?
- Why Is Available Memory of a DCS Redis 3.0 Instance Smaller Than Instance Cache Size?
- Does DCS for Redis Support Multiple Databases?
- Does DCS for Redis Support Redis Clusters?
- Does DCS for Redis Support Sentinel?
- What Is the Default Data Eviction Policy?
- What Should I Do If an Error Occurs in Redis Exporter?
- Why Is Memory Usage More Than 100%?
- Why Is Redisson Distributed Lock Not Supported by DCS Proxy Cluster Redis 3.0 Instances?
- Can I Customize or Change the Port for Accessing a DCS Instance?
- Can I Modify the Connection Addresses for Accessing a DCS Instance?
- Does DCS Support Cross-AZ Deployment?
- Why Does It Take a Long Time to Start a Cluster DCS Instance?
- What If Redis Commands Are Incompatible with DCS for Redis?
- Does DCS for Redis Provide Backend Management Software?
- Why Is Memory of a DCS Redis Instance Used Up by Just a Few Keys?
- Can I Recover Data from Deleted DCS Instances?
-
Redis Commands
- How Do I Clear Redis Data?
- How Do I Rename High-Risk Commands?
- Does DCS for Redis Support Pipelining?
- Does DCS for Redis Support the INCR and EXPIRE Commands?
- Why Do I Fail to Execute Some Redis 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?
-
Instance Scaling and Upgrade
- Can DCS Redis Instances Be Upgraded, for Example, from Redis 3.0 to Redis 4.0 or 5.0?
- Are Services Interrupted If Maintenance is Performed During the Maintenance Time Window?
- Are Instance Resources Affected During Specification Modification?
- Are Services Interrupted During Specification Modification?
- Why Do I Fail to Modify the Specifications for a DCS Redis Instance?
- Monitoring and Alarm
- Data Backup, Export, and Migration
- Master/Standby Switchover
-
Client and Network Connection
- Change History
- API Reference (ME-Abu Dhabi Region)
-
User Guide (Paris Region)
- Service Overview
- Getting Started
- Operation Guide
- Monitoring
- Auditing
-
FAQs
-
Client and Network Connection
- Security Group Configurations
- Does DCS Support Public Access?
- Does DCS Support Cross-VPC Access?
- 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?
- Why Is "ERR unknown command" Displayed When I Access a DCS Redis Instance Through a Redis Client?
- How Do I Access a DCS Redis Instance Through Redis Desktop Manager?
- What If "ERR Unsupported CONFIG subcommand" is Displayed in SpringCloud?
- How Do I Troubleshoot Redis Connection Failures?
- What Should Be Noted When Using Redis for Pub/Sub?
-
Redis Usage
- Why Is CPU Usage of a DCS Redis Instance 100%?
- Can I Change the VPC and Subnet for a DCS Redis Instance?
- Do DCS Redis Instances Limit the Size of a Key or Value?
- Why Is Available Memory of a DCS Redis 3.0 Instance Smaller Than Instance Cache Size?
- Does DCS for Redis Support Multiple Databases?
- Does DCS for Redis Support Redis Clusters?
- Does DCS for Redis Support Sentinel?
- What Is the Default Data Eviction Policy?
- What Should I Do If an Error Occurs in Redis Exporter?
- Why Is Memory Usage More Than 100%?
- Why Is Redisson Distributed Lock Not Supported by DCS Proxy Cluster Redis 3.0 Instances?
- Can I Customize or Change the Port for Accessing a DCS Instance?
- Can I Modify the Connection Addresses for Accessing a DCS Instance?
- Does DCS Support Cross-AZ Deployment?
- Why Does It Take a Long Time to Start a Cluster DCS Instance?
- Why Is Memory of a DCS Redis Instance Used Up by Just a Few Keys?
- Can I Recover Data from Deleted DCS Instances?
- Why Is "Error in execution" Returned When I Access Redis?
-
Redis Commands
- Why is "permission denied" Returned When I Run the Keys Command in Web CLI?
- How Do I Clear Redis Data?
- Does DCS for Redis Support the INCR and EXPIRE Commands?
- Why Do I Fail to Execute Some Redis 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?
-
Instance Scaling and Upgrade
- Can DCS Redis Instances Be Upgraded, for Example, from Redis 3.0 to Redis 4.0 or 5.0?
- Are Services Interrupted If Maintenance is Performed During the Maintenance Time Window?
- Are Instance Resources Affected During Specification Modification?
- Are Services Interrupted During Specification Modification?
- Why Do I Fail to Modify the Specifications for a DCS Redis or Memcached Instance?
- Data Backup, Export, and Migration
- Master/Standby Switchover
-
Memcached Usage
- Can I Dump DCS Memcached Instance Data for Analysis?
- What Memcached Version Is Compatible with DCS for Memcached?
- What Data Structures Does DCS for Memcached Support?
- Does DCS for Memcached Support Public Access?
- Can I Modify Configuration Parameters of DCS Memcached Instances?
- What Are the Differences Between DCS for Memcached and Self-Hosted Memcached?
- What Policies Does DCS for Memcached Use to Deal with Expired Data?
- How Should I Select AZs When Creating a DCS Memcached Instance?
-
Client and Network Connection
- Change History
-
API Reference (Paris Region)
- Before You Start
- API Overview
- Calling APIs
-
API V2
- Lifecycle Management
- Instance Management
- Shards and Replicas
- Parameter Management
- Backup and Restoration
-
Data Migration
- Creating a Backup Import Task
- Listing Migration Tasks
- Deleting Data Migration Tasks
- Querying Details of a Data Migration Task
- Configuring Auto-Reconnect for Migration Tasks
- 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
-
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
- Log Management
- Network Security
- Background Task Management
- Instance Diagnosis
- Template Management
- Other APIs
- Outdated APIs (V1)
- Permissions Policies and Supported Actions
- Appendix
- Change History
-
User Guide (Kuala Lumpur Region)
-
Service Overview
- What Is DCS?
- Application Scenarios
- DCS Instance Types
- DCS Instance Specifications
- Command Compatibility
- Disaster Recovery and Multi-Active Solution
- Comparing Redis Versions
- Comparing Redis and Memcached
- Comparing DCS and Open-Source Cache Services
- Notes and Constraints
- Basic Concepts
- Permissions
- Related Services
- Permissions Management
- Process of Using DCS
-
Getting Started
- Creating an Instance
-
Accessing an Instance
- Network Conditions for Accessing DCS Redis
- Accessing a DCS Redis Instance Through redis-cli
- Access in Different Languages
- Accessing a DCS Redis 4.0/5.0/6.0 Instance on the Console
- Accessing a DCS Memcached Instance (Discontinued)
- Viewing Details of a DCS Instance
- Operating DCS Instances
-
Managing DCS Instances
- Configuration Notice
- Modifying Configuration Parameters
- Modifying the Security Group
- Viewing Background Tasks
- Viewing Data Storage Statistics of a DCS Redis 3.0 Proxy Cluster Instance
- Managing Tags
- Managing Shards and Replicas
- Analyzing Big Keys and Hot Keys
- Managing IP Address Whitelist
- Viewing Redis Slow Queries
- Viewing Redis Run Logs
- Diagnosing an Instance
- Transmitting DCS Redis Data with Encryption Using SSL
- Backing Up and Restoring DCS Instances
- Migrating Data with DCS
- Managing Passwords
- Parameter Templates
- Monitoring
- Auditing
- Data Migration Guide
-
FAQs
- Instance Types/Versions
-
Client and Network Connection
- Security Group Configurations
- Does DCS Support Access over Public Networks?
- 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?
- Why Is "ERR unknown command" Displayed When I Access a DCS Redis Instance Through a Redis Client?
- How Do I Access a DCS Redis Instance Through Redis Desktop Manager?
- What If "ERR Unsupported CONFIG subcommand" is Displayed in SpringCloud?
- Is a Password Required for Accessing an Instance? How Do I Set a Password?
- What Should Be Noted When Using Redis for Pub/Sub?
- How Do I Troubleshoot Redis Connection Failures?
- 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
-
Redis Usage
- What Are Shard and Replica Quantities?
- Why Is CPU Usage of a DCS Redis Instance 100%?
- Can I Change the VPC and Subnet for a DCS Redis Instance?
- Why Aren't Security Groups Configured for DCS Redis 4.0/5.0/6.0 Instances?
- 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?
- Why Is Available Memory Smaller Than Instance Cache Size?
- Does DCS for Redis Support Read/Write Splitting?How Do I Configure Read/Write Splitting for a Redis Cluster Instance?
- Does DCS for Redis Support Multiple Databases?
- Does DCS for Redis Support Redis Clusters?
- What Is Sentinel?
- Does DCS for Redis Support Sentinel?
- What Is the Default Data Eviction Policy?
- What Should I Do If an Error Occurs in Redis Exporter?
- How Can I Secure My DCS Redis Instances?
- Why Is Redisson Distributed Lock Not Supported by DCS Proxy Cluster Redis 3.0 Instances?
- Can I Customize or Change the Port for Accessing a DCS Instance?
- Can I Modify the Connection Addresses for Accessing a DCS Instance?
- Why Do I Fail to Delete an Instance?
- Does DCS Support Cross-AZ Deployment?
- Why Does It Take a Long Time to Start a Cluster DCS Instance?
- Does DCS for Redis Provide Backend Management Software?
- Can I Recover Data from Deleted DCS Instances?
- Does DCS for Redis Support SSL Encrypted Transmission?
- Why Is Available Memory of Unused DCS Instances Less Than Total Memory and Why Is Memory Usage of Unused DCS Instances Greater Than Zero?
- 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?
- Does DCS Support External Extensions, Plug-ins, or Modules?
- Why Is "Error in execution" Returned When I Access Redis?
- Why Does a Key Disappear in Redis?
- 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?
- Can I Change the AZ for an Instance?
- Explaining and Using Hash Tags
- Will Cached Data Be Retained After an Instance Is Restarted?
-
Redis Commands
- How Do I Clear Redis Data?
- How Do I Find Specified Keys and Traverse All Keys?
- Why is "permission denied" Returned When I Run the KEYS Command in Web CLI?
- How Do I Disable High-Risk Commands?
- Does DCS for Redis Support Pipelining?
- Does DCS for Redis Support the INCR and EXPIRE Commands?
- Why Do I Fail to Execute Some Redis 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?
- Can I View the Most Frequently Used Redis Commands?
- Common Web CLI Errors
-
Instance Scaling and Upgrade
- Can DCS Redis Instances Be Upgraded, for Example, from Redis 4.0 to 5.0?
- Are Services Interrupted If Maintenance is Performed During the Maintenance Time Window?
- Are Instances Stopped or Restarted During Specification Modification?
- Are Services Interrupted During Specification Modification?
- Why Can't I Modify Specifications for a DCS Redis/Memcached Instance?
- How Do I Reduce the Capacity of a DCS Instance?
- How Do I Handle an Error When I Use Lettuce to Connect to a Redis Cluster Instance After Specification Modification?
-
Monitoring and Alarm
- How Do I View Current Concurrent Connections and Maximum Connections of a DCS Redis Instance?
- Does Redis Support Command Audits?
- What Should I Do If the Monitoring Data of a DCS Redis Instance Is Abnormal?
- Why Is Available Memory of Unused DCS Instances Less Than Total Memory and Why Is Memory Usage of Unused DCS Instances Greater Than Zero?
- 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?
-
Data Backup, Export, and Migration
- How Do I Export DCS Redis Instance Data?
- Can I Export Backup Data of DCS Redis Instances to RDB Files Using the Console?
- Why Are Processes Frequently Killed During Data Migration?
- Is All Data in a DCS Redis Instance Migrated During Online Migration?
- Do DCS Redis Instances Support Data Persistence? What Is the Impact of Persistence?
- When Will AOF Rewrites Be Triggered?
- 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?
- Online Migration with Rump
- 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?
- How Can I Migrate Partial Data?
- 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?
- Can I Migrate Data from a Lower Redis Version to a Higher One?
- How Do I Migrate Memcached Data?
- Big/Hot Key Analysis
- Master/Standby Switchover
-
Memcached Usage
- Can I Dump DCS Memcached Instance Data for Analysis?
- What Memcached Version Is Compatible with DCS for Memcached?
- What Data Structures Does DCS for Memcached Support?
- Does DCS for Memcached Support Public Access?
- Can I Modify Configuration Parameters of DCS Memcached Instances?
- What Are the Differences Between DCS for Memcached and Self-Hosted Memcached?
- What Policies Does DCS for Memcached Use to Deal with Expired Data?
- How Should I Select AZs When Creating a DCS Memcached Instance?
- Troubleshooting
- Change History
-
Service Overview
- API Reference (Kuala Lumpur Region)
-
API Reference (Ankara Region)
- Before You Start
- API Overview
- Calling APIs
-
APIs V2 (Recommended)
- Lifecycle Management
- Instance Management
- Shards and Replicas
- Parameter Management
- Backup and Restoration
-
Data Migration
- Creating a Backup Import 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
- Log Management
- Background Task Management
- Other APIs
- Outdated APIs (V1)
- Permissions Policies and Supported Actions
- Appendix
-
User Guide (Ankara Region)
- Service Overview
-
Getting Started
- Creating an Instance
-
Accessing an Instance
- Network Conditions for Accessing DCS Redis
- Accessing a DCS Redis Instance Through redis-cli
- Access in Different Languages
- Accessing a DCS Redis Instance on the Console
- Viewing Details of a DCS Instance
-
User Guide
- Permissions Management
- Operating DCS Instances
-
Managing DCS Instances
- Configuration Notice
- Modifying Configuration Parameters
- Modifying Maintenance Time Window
- Modifying the Security Group
- Viewing Background Tasks
- Viewing Data Storage Statistics of a DCS Redis 3.0 Proxy Cluster Instance
- Managing Shards and Replicas
- Analyzing Big Keys and Hot Keys
- Scanning and Deleting Expired Keys in a DCS Redis Instance
- Managing IP Address Whitelist
- Viewing Redis Run Logs
- Diagnosing an Instance
- Backing Up and Restoring DCS Instances
- Migrating Data with DCS
- Managing Passwords
- Monitoring
- Best Practices
-
FAQs
- Instance Types/Versions
-
Client and Network Connection
- Security Group Configurations
- Does DCS Support Access at EIPs?
- Does DCS Support Cross-VPC Access?
- 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?
- Why Is "ERR unknown command" Displayed When I Access a DCS Redis Instance Through a Redis Client?
- How Do I Access a DCS Redis Instance Through Redis Desktop Manager?
- What If "ERR Unsupported CONFIG subcommand" is Displayed in SpringCloud?
- How Do I Troubleshoot Redis Connection Failures?
- What Should Be Noted When Using Redis for Pub/Sub?
- Should I Use a Domain Name or an IP Address to Connect to a DCS Redis Instance?
-
Redis Usage
- Why Is CPU Usage of a DCS Redis Instance 100%?
- Can I Change the VPC and Subnet for a DCS Redis Instance?
- Why Aren't Security Groups Configured for DCS Redis 4.0 and Later Instances?
- 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?
- Why Is Available Memory Smaller Than Instance Cache Size?
- Does DCS for Redis Support Multiple Databases?
- Does DCS for Redis Support Redis Clusters?
- Does DCS for Redis Support Sentinel?
- What Is the Default Data Eviction Policy?
- What Should I Do If an Error Occurs in Redis Exporter?
- Why Is Redisson Distributed Lock Not Supported by DCS Proxy Cluster Redis 3.0 Instances?
- Can I Customize or Change the Port for Accessing a DCS Instance?
- Can I Modify the Connection Addresses for Accessing a DCS Instance?
- Does DCS Support Cross-AZ Deployment?
- Why Does It Take a Long Time to Start a Cluster DCS Instance?
- What If Redis Commands Are Incompatible with DCS for Redis?
- Does DCS for Redis Provide Backend Management Software?
- Why Is Memory of a DCS Redis Instance Used Up by Just a Few Keys?
- Can I Recover Data from Deleted DCS Instances?
- Why Is "Error in execution" Returned When I Access Redis?
-
Redis Commands
- How Do I Clear Redis Data?
- How Do I Disable High-Risk Commands?
- Does DCS for Redis Support Pipelining?
- Does DCS for Redis Support the INCR and EXPIRE Commands?
- Why Do I Fail to Execute Some Redis 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?
-
Instance Scaling and Upgrade
- Can DCS Redis Instances Be Upgraded, for Example, from Redis 4.0 to 5.0?
- Are Services Interrupted If Maintenance is Performed During the Maintenance Time Window?
- Are Instances Stopped or Restarted During Specification Modification?
- Are Services Interrupted During Specification Modification?
- Why Can't I Modify Specifications for a DCS Redis Instance?
-
Monitoring and Alarm
- Does Redis Support Command Audits?
- What Should I Do If the Monitoring Data of a DCS Redis Instance Is Abnormal?
- Why Is Available Memory of Unused DCS Instances Less Than Total Memory and Why Is Memory Usage of Unused DCS Instances Greater Than Zero?
- Why Is Used Memory Greater Than Available Memory?
- Why Is Flow Control Triggered? How Do I Handle It?
-
Data Backup, Export, and Migration
- How Do I Export DCS Redis Instance Data?
- Can I Export Backup Data of DCS Redis Instances to RDB Files Using the Console?
- Why Are Processes Frequently Killed During Data Migration?
- Is All Data in a DCS Redis Instance Migrated During Online Migration?
- Do DCS Redis Instances Support Data Persistence? What Is the Impact of Persistence?
- When Will AOF Rewrites Be Triggered?
- Online Migration with Rump
-
Big/Hot Key Analysis and Expired Key Scan
- 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 Analyze the Hot Keys of a DCS Redis 3.0 Instance?
- 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?
- Master/Standby Switchover
-
User Guide (ME-Abu Dhabi Region)
- General Reference
Copied.
Connecting to Redis on Jedis (Java)
This section describes how to access a Redis instance on Jedis. For more information about how to use other Redis clients, visit the Redis official website.
Spring Data Redis is already integrated with Jedis and Lettuce for Spring Boot projects. Spring Boot 1.x is integrated with Jedis, and Spring Boot 2.x is integrated with Lettuce. To use Jedis in Spring Boot 2.x and later, you need to solve Lettuce dependency conflicts.
Prerequisites
- A Redis instance is created, and is in the Running state.
- View the IP address/domain name and port number of the DCS Redis instance to be accessed. For details, see Distributed Cache Service User Guide > "Getting Started" > "Viewing Details of a DCS Instance".
Pom Configuration
<!-- import spring-data-redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <!--In Spring Boot 2.0, Lettuce is used by default. To use Jedis, solve dependency conflicts.--> <exclusions> <exclusion> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> </exclusion> </exclusions> </dependency> <!--Jedis dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>${jedis.version}<version> </dependency>
application.properties Configuration
- Single-node, master/standby, and Proxy Cluster
#Redis host spring.redis.host=<host> #Redis port spring.redis.port=<port> #Redis database number spring.redis.database=0 #Redis password spring.redis.password=<password> #Redis read/write timeout spring.redis.timeout=2000 #Whether to enable connection pooling spring.redis.jedis.pool.enabled=true #Minimum connections in the pool spring.redis.jedis.pool.min-idle=50 #Maximum idle connections in the pool spring.redis.jedis.pool.max-idle=200 #Maximum connections in the pool spring.redis.jedis.pool.max-active=200 #Maximum amount of time a connection allocation should block before throwing an exception when the pool is exhausted. The default value -1 indicates to wait indefinitely. spring.redis.jedis.pool.max-wait=3000 #Interval for checking and evicting idle connection. Default: 60s. spring.redis.jedis.pool.time-between-eviction-runs=60S
- Redis Cluster
#Redis Cluster node connection information spring.redis.cluster.nodes=<ip:port>,<ip:port>,<ip:port> #Redis Cluster password spring.redis.password=<password> #Redis Cluster max. redirecting times spring.redis.cluster.max-redirects=3 #Redis read/write timeout spring.redis.timeout=2000 #Whether to enable connection pooling spring.redis.jedis.pool.enabled=true #Minimum connections in the pool spring.redis.jedis.pool.min-idle=50 #Maximum idle connections in the pool spring.redis.jedis.pool.max-idle=200 #Maximum connections in the pool spring.redis.jedis.pool.max-active=200 #Maximum amount of time a connection allocation should block before throwing an exception when the pool is exhausted. The default value -1 indicates to wait indefinitely. spring.redis.jedis.pool.max-wait=3000 #Interval for checking and evicting idle connections. Default: 60s. spring.redis.jedis.pool.time-between-eviction-runs=60S
Bean Configuration
- Single-node, master/standby, and Proxy Cluster
import java.time.Duration; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.RedisStandaloneConfiguration; import org.springframework.data.redis.connection.jedis.JedisClientConfiguration; import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; import redis.clients.jedis.JedisPoolConfig; @Configuration public class RedisConfiguration { @Value("${redis.host}") private String redisHost; @Value("${redis.port:6379}") private Integer redisPort = 6379; @Value("${redis.database:0}") private Integer redisDatabase = 0; @Value("${redis.password:}") private String redisPassword; @Value("${redis.connect.timeout:3000}") private Integer redisConnectTimeout = 3000; @Value("${redis.read.timeout:2000}") private Integer redisReadTimeout = 2000; @Value("${redis.pool.minSize:50}") private Integer redisPoolMinSize = 50; @Value("${redis.pool.maxSize:200}") private Integer redisPoolMaxSize = 200; @Value("${redis.pool.maxWaitMillis:3000}") private Integer redisPoolMaxWaitMillis = 3000; @Value("${redis.pool.softMinEvictableIdleTimeMillis:1800000}") private Integer redisPoolSoftMinEvictableIdleTimeMillis = 30 * 60 * 1000; @Value("${redis.pool.timeBetweenEvictionRunsMillis:60000}") private Integer redisPoolBetweenEvictionRunsMillis = 60 * 1000; @Bean public RedisConnectionFactory redisConnectionFactory(JedisClientConfiguration clientConfiguration) { RedisStandaloneConfiguration standaloneConfiguration = new RedisStandaloneConfiguration(); standaloneConfiguration.setHostName(redisHost); standaloneConfiguration.setPort(redisPort); standaloneConfiguration.setDatabase(redisDatabase); standaloneConfiguration.setPassword(redisPassword); return new JedisConnectionFactory(standaloneConfiguration, clientConfiguration); } @Bean public JedisClientConfiguration clientConfiguration() { JedisClientConfiguration clientConfiguration = JedisClientConfiguration.builder() .connectTimeout(Duration.ofMillis(redisConnectTimeout)) .readTimeout(Duration.ofMillis(redisReadTimeout)) .usePooling().poolConfig(redisPoolConfig()) .build(); return clientConfiguration; } private JedisPoolConfig redisPoolConfig() { JedisPoolConfig poolConfig = new JedisPoolConfig(); //Minimum connections in the pool poolConfig.setMinIdle(redisPoolMinSize); //Maximum idle connections in the pool poolConfig.setMaxIdle(redisPoolMaxSize); //Maximum total connections in the pool poolConfig.setMaxTotal(redisPoolMaxSize); //Wait when pool is exhausted? Set to true to wait. To validate setMaxWait, it has to be true. poolConfig.setBlockWhenExhausted(true); //Longest time to wait for connection after pool is exhausted. The default value -1 indicates to wait indefinitely. poolConfig.setMaxWaitMillis(redisPoolMaxWaitMillis); //Set to true to enable connectivity test on creating connections. Default: false. poolConfig.setTestOnCreate(false); //Set to true to enable connectivity test on borrowing connections. Default: false. Set to false for heavy-traffic services to reduce overhead. poolConfig.setTestOnBorrow(true); //Set to true to enable connectivity test on returning connections. Default: false. Set to false for heavy-traffic services to reduce overhead. poolConfig.setTestOnReturn(false); //Indicates whether to check for idle connections. If this is set to false, idle connections are not evicted. poolConfig.setTestWhileIdle(true); //Duration after which idle connections are evicted. If the idle duration is greater than this value and the maximum number of idle connections is reached, idle connections are directly evicted. poolConfig.setSoftMinEvictableIdleTimeMillis(redisPoolSoftMinEvictableIdleTimeMillis); //Disable MinEvictableIdleTimeMillis(). poolConfig.setMinEvictableIdleTimeMillis(-1); //Interval for checking and evicting idle connections. Default: 60s. poolConfig.setTimeBetweenEvictionRunsMillis(redisPoolBetweenEvictionRunsMillis); return poolConfig; } }
- Redis Cluster
import java.time.Duration; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisClusterConfiguration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.RedisNode; import org.springframework.data.redis.connection.jedis.JedisClientConfiguration; import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; import redis.clients.jedis.JedisPoolConfig; @Configuration public class RedisConfiguration { @Value("${redis.cluster.nodes}") private String redisClusterNodes; @Value("${redis.password:}") private String redisPassword; @Value("${redis.connect.timeout:3000}") private Integer redisConnectTimeout = 3000; @Value("${redis.read.timeout:2000}") private Integer redisReadTimeout = 2000; @Value("${redis.pool.minSize:50}") private Integer redisPoolMinSize = 50; @Value("${redis.pool.maxSize:200}") private Integer redisPoolMaxSize = 200; @Value("${redis.pool.maxWaitMillis:3000}") private Integer redisPoolMaxWaitMillis = 3000; @Value("${redis.pool.softMinEvictableIdleTimeMillis:1800000}") private Integer redisPoolSoftMinEvictableIdleTimeMillis = 30 * 60 * 1000; @Value("${redis.pool.timeBetweenEvictionRunsMillis:60000}") private Integer redisPoolBetweenEvictionRunsMillis = 60 * 1000; @Bean public RedisConnectionFactory redisConnectionFactory(JedisClientConfiguration clientConfiguration) { RedisClusterConfiguration clusterConfiguration = new RedisClusterConfiguration(); List<RedisNode> clusterNodes = new ArrayList<>(); for (String clusterNodeStr : redisClusterNodes.split(",")) { String[] nodeInfo = clusterNodeStr.split(":"); clusterNodes.add(new RedisNode(nodeInfo[0], Integer.valueOf(nodeInfo[1]))); } clusterConfiguration.setClusterNodes(clusterNodes); clusterConfiguration.setPassword(redisPassword); clusterConfiguration.setMaxRedirects(3); return new JedisConnectionFactory(clusterConfiguration, clientConfiguration); } @Bean public JedisClientConfiguration clientConfiguration() { JedisClientConfiguration clientConfiguration = JedisClientConfiguration.builder() .connectTimeout(Duration.ofMillis(redisConnectTimeout)) .readTimeout(Duration.ofMillis(redisReadTimeout)) .usePooling().poolConfig(redisPoolConfig()) .build(); return clientConfiguration; } private JedisPoolConfig redisPoolConfig() { JedisPoolConfig poolConfig = new JedisPoolConfig(); //Minimum connections in the pool poolConfig.setMinIdle(redisPoolMinSize); //Maximum idle connections in the pool poolConfig.setMaxIdle(redisPoolMaxSize); //Maximum total connections in the pool poolConfig.setMaxTotal(redisPoolMaxSize); //Wait when pool is exhausted? Set to true to wait. To validate setMaxWait, it has to be true. poolConfig.setBlockWhenExhausted(true); //Longest time to wait for connection after pool is exhausted. The default value -1 indicates to wait indefinitely. poolConfig.setMaxWaitMillis(redisPoolMaxWaitMillis); //Set to true to enable connectivity test on creating connections. Default: false. poolConfig.setTestOnCreate(false); //Set to true to enable connectivity test on borrowing connections. Default: false. Set to false for heavy-traffic services to reduce overhead. poolConfig.setTestOnBorrow(true); //Set to true to enable connectivity test on returning connections. Default: false. Set to false for heavy-traffic services to reduce overhead. poolConfig.setTestOnReturn(false); //Indicates whether to check for idle connections. If this is set to false, idle connections are not evicted. poolConfig.setTestWhileIdle(true); //Duration after which idle connections are evicted. If the idle duration is greater than this value and the maximum number of idle connections is reached, idle connections are directly evicted. poolConfig.setSoftMinEvictableIdleTimeMillis(redisPoolSoftMinEvictableIdleTimeMillis); //Disable MinEvictableIdleTimeMillis(). poolConfig.setMinEvictableIdleTimeMillis(-1); //Interval for checking and evicting idle connections. Default: 60s. poolConfig.setTimeBetweenEvictionRunsMillis(redisPoolBetweenEvictionRunsMillis); return poolConfig; } }
Parameter Description
Parameter |
Default Value |
Description |
---|---|---|
hostName |
localhost |
IP address/domain name for connecting to a DCS Redis instance |
port |
6379 |
Port number |
database |
0 |
Database number. Default: 0. |
password |
- |
Redis instance password |
Parameter |
Description |
---|---|
clusterNodes |
Cluster node connection information, including the node IP address and port number |
maxRedirects |
Maximum redirecting times |
password |
Password |
Parameter |
Default Value |
Description |
---|---|---|
minIdle |
- |
Minimum connections in the connection pool |
maxIdle |
- |
Maximum idle connections in the connection pool |
maxTotal |
- |
Maximum total connections in the connection pool |
blockWhenExhausted |
true |
Indicates whether to wait after the connection pool is exhausted. true: Wait. false: Do not wait. To validate maxWaitMillis, this parameter must be set to true. |
maxWaitMillis |
-1 |
Maximum amount of time (in milliseconds) to wait for connection after the connection pool is exhausted. The default value -1 indicates to wait indefinitely. |
testOnCreate |
false |
Indicates whether to enable connectivity test on creating connections. false: Disable. true: Enable. |
testOnBorrow |
false |
Indicates whether to enable connectivity test on obtaining connections. false: Disable. true: Enable. For heavy-traffic services, set this parameter to false to reduce overhead. |
testOnReturn |
false |
Indicates whether to enable connectivity test on returning connections. false: Disable. true: Enable. For heavy-traffic services, set this parameter to false to reduce overhead. |
testWhileIdle |
false |
Indicates whether to check for idle connections. If this parameter is set to false, idle connections are not evicted. Recommended value: true. |
softMinEvictableIdleTimeMillis |
1800000 |
Duration (in milliseconds) after which idle connections are evicted. If the idle duration is greater than this value and the maximum number of idle connections is reached, idle connections are directly evicted. |
minEvictableIdleTimeMillis |
60000 |
Minimum amount of time (in milliseconds) a connection may remain idle in the pool before it is eligible for eviction. The recommended value is -1, indicating that softMinEvictableIdleTimeMillis is used instead. |
timeBetweenEvictionRunsMillis |
60000 |
Interval (in milliseconds) for checking and evicting idle connections. |
Parameter |
Default Value |
Description |
---|---|---|
connectTimeout |
2000 |
Connection timeout interval, in milliseconds. |
readTimeout |
2000 |
Timeout interval for waiting for a response, in milliseconds. |
poolConfig |
- |
Pool configurations. For details, see JedisPoolConfig. |
Suggestion for Configuring DCS Instances
- Connection pool configuration
NOTE:
The following calculation is applicable only to common service scenarios. You can customize it based on your service requirements.
There is no standard connection pool size. You can configure one based on your service traffic. The following formulas are for reference:
- Minimum number of connections = (QPS of a single node accessing Redis)/(1000 ms/Average time spent on a single command)
- Maximum number of connections = (QPS of a single node accessing Redis)/(1000 ms/Average time spent on a single command) x 150%
For example, if the QPS of a service application is about 10,000, each request needs to access Redis 10 times (that is, 100,000 accesses to Redis every second), and the service application has 10 hosts, the calculation is as follows:
QPS of a single node accessing Redis = 100,000/10 = 10,000
Average time spent on a single command = 20 ms (Redis takes 5 ms to 10 ms to process a single command under normal conditions. If network jitter occurs, it takes 15 ms to 20 ms.)
Minimum number of connections = 10,000/(1000 ms/20 ms) = 200
Maximum number of connections = 10,000/(1000 ms/20 ms) x 150% = 300
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot