This topic describes how to connect to a Tair (Redis OSS-compatible) instance by using redis-cli, code, or Data Management (DMS).
Prerequisites
An IP address whitelist is configured for the instance.
A password is specified for the instance. If no password is specified for the instance, see Change or reset the password.
Procedure
redis-cli
In this example, redis-cli is used to connect to a Tair (Redis OSS-compatible) instance from a Linux Elastic Compute Service (ECS) instance. The ECS instance is deployed in the same virtual private cloud (VPC) as the Tair (Redis OSS-compatible) instance.
To connect to the Tair (Redis OSS-compatible) instance from your on-premises device over the Internet, apply for a public endpoint.
Log on to the ECS instance and run the following commands in sequence to download, install, and compile redis-cli:
sudo yum -y install gcc # Install GNU Compiler Collection (GCC). wget https://download.redis.io/releases/redis-7.0.0.tar.gz tar xzf redis-7.0.0.tar.gz cd redis-7.0.0&&make
In this example, redis-cli 7.0.0 is used. You can install another version. It takes 2 to 3 minutes to compile and install redis-cli.
Run the following command to connect to the instance:
src/redis-cli -h hostname -a password -p port
Parameters:
hostname: the endpoint of the instance. In the Connection Information section of the instance details page in the console, you can view the VPC endpoint of the instance, such as
r-8vbwds91ie1rdl****.redis.zhangbei.rds.aliyuncs.com
. For more information, see View endpoints.password: the password of the instance.
port: the port number. Default value: 6379.
Sample command:
src/redis-cli -h r-8vbwds91ie1rdl****.redis.zhangbei.rds.aliyuncs.com -a TestPassword123 -p 6379
Write and read data.
Run the
SET bar foo
command.The expected output is
OK
.Run the
GET bar
command.The expected output is
"foo"
.
Code
To connect to the Tair (Redis OSS-compatible) instance from your on-premises device over the Internet, apply for a public endpoint.
In this example, the Jedis client is used. For connection code examples using other common types of clients, see Connection code examples with common types of clients.
Configure pom.xml to include the necessary dependencies.
<!-- Import spring-data-redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <!-- Since Spring Boot 2.0, Lettuce is the default client. Exclude lettuce when using Jedis. --> <exclusions> <exclusion> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> </exclusion> </exclusions> </dependency> <!-- Import jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency>
Modify the connection parameters based on the comments.
@Configuration public class RedisConfig { @Bean JedisConnectionFactory redisConnectionFactory() { // This example is used only to test connectivity. In production environments, we recommend that you place connection information in a configuration file and retrieve it using the @Value annotation. // The endpoint (hostName) and port (port) can be obtained from the Connection Information section of the instance details page. Select a VPC endpoint or public endpoint based on your client network environment. RedisStandaloneConfiguration config = new RedisStandaloneConfiguration("r-8vbwds91ie1rdl****.redis.zhangbei.rds.aliyuncs.com", 6379); // Specify the password in the username:password format. For example, if the username is testaccount and the password is Rp829dlwa, enter testaccount:Rp829dlwa as the password. // If you forget your username or password, you can reset the password or create a new account by clicking Account Management in the left-side navigation pane of the instance details page. config.setPassword(RedisPassword.of("Username:Password")); JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); // Specify the maximum number of connections based on your business requirements. This value cannot exceed the maximum number of connections supported by the instance. jedisPoolConfig.setMaxTotal(30); // Specify the maximum number of idle connections based on your business requirements. This value cannot exceed the maximum number of connections supported by the instance. jedisPoolConfig.setMaxIdle(20); // Disable testOn[Borrow|Return] to prevent additional PING commands from being generated. jedisPoolConfig.setTestOnBorrow(false); jedisPoolConfig.setTestOnReturn(false); JedisClientConfiguration jedisClientConfiguration = JedisClientConfiguration.builder().usePooling().poolConfig( jedisPoolConfig).build(); return new JedisConnectionFactory(config, jedisClientConfiguration); } @Bean public RedisTemplate<String, Object> redisTemplate() { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(redisConnectionFactory()); template.setKeySerializer(new StringRedisSerializer()); template.setValueSerializer(new GenericJackson2JsonRedisSerializer()); return template; } }
Test connectivity.
@SpringBootTest public class RedisTest { @Autowired private RedisTemplate<String, Object> redisTemplate; @Test void test() { try { redisTemplate.opsForValue().set("test_key", "hello world!"); System.out.println("Connection successful:"+redisTemplate.opsForValue().get("test_key")); } catch (Exception e) { e.printStackTrace(); System.out.println("An exception occurred during the connection attempt. Refer to the documentation " + "https://www.alibabacloud.com/help/en/redis/support/how-do-i-troubleshoot-connection-issues-in-apsaradb-for-redis?spm=a2c63.p38356.help-menu-26340.d_5_1_1_4.47ca2024nvxRlS" + "to troubleshoot network, whitelist, and account/password issues." + "You can also refer to the documentation based on the error message: https://www.alibabacloud.com/help/en/redis/support/common-errors-and-troubleshooting?spm=a2c63.p38356.help-menu-26340.d_5_0.77cc79fejApYJN"); } } }
After you run the preceding code, the following output is returned if the connection is successful:
Connection successful: hello world!
DMS
Log on to the console and go to the Instances page. In the top navigation bar, select the region in which the instance that you want to manage resides. Then, find the instance and click the instance ID.
In the upper-right corner of the instance details page, click Log on to Database.
In the Log on to Database Instance dialog box, set the Access mode parameter to password login and enter a password.
In this mode, the default account is used for logon. You can view the account details on the Account Management page in the console.
Click Login.
Write and read data.
On the SQLConsole page in the DMS console, enter the
SET foo hello
command and click Execute(F8).The expected output is
OK
.Enter the
GET foo
command and click Execute(F8).The expected output is
hello
.
References
For more information, see the following topics:
Special connection methods
Use a client to connect to an instance for which TLS (SSL) encryption is enabled: TLS encryption improves transport link security and ensures data integrity.
Use the direct connection mode to connect to a cluster instance: If your instance is a cluster instance in direct connection mode, you can use the private endpoint to bypass proxy nodes and directly access backend data shards. This connection to cluster instances is similar to the connection to open source Redis clusters. Compared with the proxy mode, the direct connection mode reduces the response time because requests do not need to pass through proxy nodes.
Use the Sentinel-compatible mode to connect to an instance: Tair (Redis OSS-compatible) provides the Sentinel-compatible mode. After you enable this mode, instances can be connected from the client in the same manner as the native Redis Sentinel.
Common errors and troubleshooting
Error message | Cause and solution |
| The whitelist is incorrectly configured.
Then, run the |
| |
| |
| The password is invalid. Specify the correct password in a valid format. The password format varies based on the selected account.
Note
|