この Topic では、redis-cli、コード、または Data Management (DMS) を使用して Tair (Redis OSS-compatible) インスタンスに接続する方法について説明します。
前提条件
インスタンスに IP アドレスホワイトリストが設定されている。
インスタンスにパスワードが設定されている。パスワードが設定されていない場合は、「パスワードの変更またはリセット」をご参照ください。インスタンスの作成時にパスワードを設定した場合、この前提条件は適用されません。
手順
redis-cli
この例では、Linux ECS インスタンス上の redis-cli を使用して、同じ VPC 内の Tair (Redis OSS-compatible) インスタンスにアクセスする方法を示します。
オンプレミスのデバイスから接続するには、パブリックエンドポイントをリクエストして接続に使用できます。
ECS インスタンスにログインします。次のコマンドを実行して、redis-cli をダウンロード、インストール、コンパイルします。
sudo yum -y install gcc # GCC 依存関係をインストールします。 wget https://download.redis.io/releases/redis-7.2.0.tar.gz tar xzf redis-7.2.0.tar.gz cd redis-7.2.0&&makeこの例では redis-cli 7.2.0 を使用します。他のバージョンをインストールすることもできます。コンパイルとインストールのプロセスには通常 2〜3 分かかります。
次のコマンドを実行してインスタンスに接続します。
src/redis-cli -h hostname -a password -p portパラメーター:
hostname: インスタンスのエンドポイント。コンソールの 接続情報 エリアで、インスタンスの [VPC] エンドポイント (例:
r-8vbwds91ie1rdl****.redis.zhangbei.rds.aliyuncs.com) を表示できます。詳細については、「エンドポイントの表示」をご参照ください。password: パスワード。
port: ポート番号。デフォルトは 6379 です。
例:
src/redis-cli -h r-8vbwds91ie1rdl****.redis.zhangbei.rds.aliyuncs.com -a TestPassword123 -p 6379データの書き込みと読み取り。
SET bar fooコマンドを実行します。期待される出力は
OKです。GET barコマンドを実行します。期待される出力は
"foo"です。
コード接続
オンプレミスのデバイスから接続するには、パブリックエンドポイントをリクエストして接続に使用できます。
この例では、Jedis クライアントを使用してインスタンスに接続する方法を示します。他の一般的なクライアントのコード例については、「一般的なクライアントの接続例」をご参照ください。
pom.xml 構成を追加します。
<!-- spring-data-redis をインポートします --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <!-- Spring Boot 2.0 以降、Lettuce がデフォルトのクライアントです。Jedis を使用する場合は Lettuce を除外します。 --> <exclusions> <exclusion> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> </exclusion> </exclusions> </dependency> <!-- jedis をインポートします --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency>接続情報を設定します。コメントに基づいてパラメーターを変更します。
@Configuration public class RedisConfig { @Bean JedisConnectionFactory redisConnectionFactory() { // この例は接続テスト専用です。本番環境では、接続情報を構成ファイルに書き込み、@Value アノテーションを使用して読み取ることをお勧めします。 // インスタンス詳細ページの [接続情報] セクションからエンドポイント (hostName) とポート (port) を取得します。クライアントのネットワーク環境に基づいて、VPC エンドポイントまたはパブリックエンドポイントを選択します。 RedisStandaloneConfiguration config = new RedisStandaloneConfiguration("r-8vbwds91ie1rdl****.redis.zhangbei.rds.aliyuncs.com", 6379); // パスワードのフォーマットは account:password です。たとえば、アカウントが testaccount でパスワードが Rp829dlwa の場合、パスワードを testaccount:Rp829dlwa に設定します。 // アカウントまたはパスワードを忘れた場合は、インスタンス詳細ページに移動し、左側のナビゲーションウィンドウで [アカウント管理] をクリックしてパスワードをリセットするか、アカウントを作成します。 config.setPassword(RedisPassword.of("Account:Password")); JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); // 必要に応じて最大接続数を設定します。この値は、インスタンスタイプでサポートされている最大接続数を超えることはできません。 jedisPoolConfig.setMaxTotal(30); // 必要に応じて最大アイドル接続数を設定します。この値は、インスタンスタイプでサポートされている最大接続数を超えることはできません。 jedisPoolConfig.setMaxIdle(20); // testOn[Borrow|Return] をオフにして、余分な PING コマンドを防ぎます。 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; } }接続をテストします。
@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("接続中に例外が発生しました。ネットワーク、ホワイトリスト、アカウントまたはパスワードの問題をトラブルシューティングするには、" + "https://www.alibabacloud.com/help/en/redis/support/how-do-i-troubleshoot-connection-issues-in-apsaradb-for-redis" + " のドキュメントを参照してください。" + " エラーメッセージに基づいてドキュメントを参照することもできます: https://www.alibabacloud.com/help/en/redis/support/common-errors-and-troubleshooting"); } } }コードを実行します。接続に成功すると、次の結果が返されます。
Connection successful:hello world!
DMS
コンソールにログインし、インスタンスページに移動します。上部のナビゲーションバーで、管理するインスタンスが存在するリージョンを選択します。次に、インスタンスを見つけてインスタンス ID をクリックします。
ページの右上隅にある データベースにログインする ボタンをクリックします。
DMS ログインページで、[アクセスモード] を [パスワードログイン] に設定し、パスワードを入力します。
このメソッドは、デフォルトアカウントでログインします。アカウントの詳細は、コンソールの アカウント管理 ページで表示できます。
[ログイン] ボタンをクリックします。
データの書き込みと読み取り。
DMS の [SQL コンソール] ページで、コマンド
SET foo helloを入力し、[実行 (F8)] をクリックします。期待される出力は
OKです。GET fooコマンドを入力し、[実行 (F8)] をクリックします。期待される出力は
helloです。
参考資料
以下の Topic では、より詳細な説明と例を示します。
特別な接続方法
SSL 暗号化を有効にしてインスタンスに接続する: Transport Layer Security (TLS) 暗号化機能を有効にすると、データリンクのセキュリティが向上し、データ整合性が確保されます。
直接接続モードを使用してインスタンスに接続する: クラスターインスタンスの場合、直接接続エンドポイントをリクエストできます。このエンドポイントを使用すると、バックエンドのデータシャードに直接アクセスできます。これは、ネイティブの Redis クラスターへの接続に似ています。 プロキシモード と比較して、直接接続モードはリクエストがプロキシによって処理される必要がないため、応答時間が短縮されます。
Sentinel 互換モードを使用してインスタンスに接続する: インスタンスは Sentinel 互換モードを提供します。このモードを有効にすると、クライアントはネイティブの Redis Sentinel に接続するのと同じ方法でインスタンスに接続できます。
一般的なエラー
エラーメッセージ | 原因と解決策 |
| ホワイトリストが正しく設定されていません。次の項目を確認してください:
トラブルシューティング後、 |
| |
| |
| パスワードが無効です。有効なフォーマットで正しいパスワードを使用してください。パスワードのフォーマットは、選択したアカウントによって異なります。
説明
|