Fitur Orca dari PolarDB for MySQL kompatibel dengan protokol Redis, sehingga memungkinkan Anda menghubungkan ke database menggunakan client Redis utama. Panduan ini mencakup prasyarat dan menyediakan contoh kode koneksi client untuk beberapa bahasa pemrograman populer.
Prasyarat
Sebelum menghubungkan ke Orca, pastikan Anda memenuhi prasyarat berikut:
-
Fitur Orca telah diaktifkan untuk kluster PolarDB Anda.
-
Anda telah menambahkan alamat IP atau Blok CIDR client ke daftar putih kluster PolarDB Anda.
-
Anda telah membuat akun Orca khusus untuk mengakses fitur Orca.
-
Anda telah memperoleh endpoint untuk fitur Orca.
Catatan penggunaan
-
Mekanisme autentikasi: Orca dan Redis native menggunakan mekanisme autentikasi yang berbeda. Orca tidak memiliki pengguna default. Semua koneksi harus diautentikasi dengan akun Orca yang dibuat di Konsol.
-
Kompatibilitas perintah AUTH: Untuk mendukung client yang hanya mendukung autentikasi berbasis password, perintah
AUTHOrca mendukung dua format.-
AUTH <username> <password>: Format standar. Berikan username dan password secara terpisah. -
AUTH <username>:<password>: Format kompatibilitas. Gabungkan username dan password dengan tanda titik dua (:) dan berikan string gabungan tersebut sebagai satu parameter password.
-
-
Kompatibilitas perintah HELLO: Seperti perintah
AUTH, autentikasi untuk perintahHELLOjuga mendukung kedua format yang dijelaskan di atas.-
HELLO <protover> AUTH <username> <password> -
HELLO <protover> AUTH <username>:<password>
-
Hubungkan dengan redis-cli
-
Instal redis-cli: Lihat tutorial Instal redis-cli untuk menginstalnya di perangkat client Anda.
-
Hubungkan ke Orca: Jalankan perintah berikut. Ganti endpoint dan port dengan detail koneksi aktual Anda.
redis-cli -h pz-****************.rwlb.rds.aliyuncs.com -p 6379 -
Autentikasi koneksi Anda: Setelah terhubung, gunakan perintah
AUTHuntuk melakukan autentikasi. Anda dapat menggunakan salah satu dari format berikut. Ganti placeholder dengan akun dan password Orca Anda.# Format 1: Berikan username dan password secara terpisah. AUTH orca_user orca_password # Format 2: Berikan username dan password yang digabung sebagai password. AUTH orca_user:orca_passwordNilai kembali
OKmenunjukkan koneksi dan autentikasi berhasil.
Hubungkan dengan pustaka client
Gunakan contoh berikut untuk menghubungkan dari aplikasi Anda.
Java (Jedis)
-
Tambahkan dependensi Maven:
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>4.3.0</version> </dependency> -
Contoh kode: Karena Jedis hanya menerima satu parameter password, Anda harus menggunakan format
username:password.import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class JedisExample { public static void main(String[] args) { JedisPoolConfig poolConfig = new JedisPoolConfig(); // Detail koneksi Orca String host = "pz-****************.rwlb.rds.aliyuncs.com"; // Ganti dengan endpoint Orca Anda int port = 6379; String username = "orca_user"; // Ganti dengan username Orca Anda String password = "orca_password"; // Ganti dengan password Orca Anda // Autentikasi Jedis memerlukan penggabungan username dan password String authPassword = username + ":" + password; JedisPool pool = new JedisPool(poolConfig, host, port, 3000, authPassword); try (Jedis jedis = pool.getResource()) { jedis.set("name", "jedis"); System.out.println(jedis.get("name")); } catch (Exception e) { e.printStackTrace(); } finally { pool.destroy(); } } }
Java (Lettuce)
-
Tambahkan dependensi Maven:
<dependency> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> <version>6.3.0.RELEASE</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-transport-native-epoll</artifactId> <version>4.1.100.Final</version> <classifier>linux-x86_64</classifier> </dependency> -
Contoh kode: Lettuce mendukung parameter username dan password terpisah (disarankan).
import io.lettuce.core.RedisClient; import io.lettuce.core.RedisURI; import io.lettuce.core.api.StatefulRedisConnection; import io.lettuce.core.api.sync.RedisCommands; public class LettuceExample { public static void main(String[] args) { // Detail koneksi Orca String host = "pz-****************.rwlb.rds.aliyuncs.com"; // Ganti dengan endpoint Orca Anda int port = 6379; String username = "orca_user"; // Ganti dengan username Orca Anda String password = "orca_password"; // Ganti dengan password Orca Anda // Lettuce mendukung parameter username dan password terpisah RedisURI uri = RedisURI.Builder .redis(host, port) .withAuthentication(username, password) .build(); RedisClient redisClient = RedisClient.create(uri); StatefulRedisConnection<String, String> connection = redisClient.connect(); RedisCommands<String, String> syncCommands = connection.sync(); syncCommands.set("name", "Lettuce"); String value = syncCommands.get("name"); // Output: Lettuce System.out.println("Get value: " + value); connection.close(); redisClient.shutdown(); } }
Java (Spring Data Redis)
-
Tambahkan dependensi Maven:
<!-- Proyek induk Spring Boot untuk manajemen versi --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.18</version> <!-- Kami menyarankan agar Anda menggunakan versi stabil terbaru. --> <relativePath/> </parent> <!-- Konfigurasi lainnya... --> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.36</version> </dependency> </dependencies> <build> <plugins> <!-- Plugin Maven Spring Boot untuk pengemasan dan menjalankan aplikasi --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> -
Contoh kode: Anda dapat memilih salah satu metode berikut untuk mengonfigurasi koneksi ke Orca.
application.ymlSpring Boot 2.x dan versi lebih baru mendukung penentuan username dan password secara terpisah dalam
application.yml. Ini adalah metode yang disarankan.-
Struktur file proyek adalah sebagai berikut:
test_redis/ ├── pom.xml └── src/ └── main/ ├── java/ │ └── com/ │ └── example/ │ ├── MainApplication.java │ └── RedisTestRunner.java └── resources/ └── application.yml -
Konfigurasikan
application.yml: Buat fileapplication.ymldi direktorisrc/main/resources/. File ini menyimpan semua informasi konfigurasi.spring: redis: host: pz-****************.rwlb.rds.aliyuncs.com # Ganti dengan endpoint Orca Anda port: 6379 username: orca_user # Ganti dengan username Orca Anda password: orca_password # Ganti dengan password Orca Anda database: 0 jedis: pool: max-active: 30 max-idle: 20 min-idle: 5 max-wait: -1ms -
Buat kelas aplikasi utama
MainApplication.java. Ini adalah titik masuk untuk aplikasi Spring Boot.package com.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class MainApplication { public static void main(String[] args) { SpringApplication.run(MainApplication.class, args); } } -
Buat kelas runner pengujian
RedisTestRunner.java. Kelas ini secara otomatis berjalan setelah aplikasi Spring Boot dimulai, melakukan operasi baca-tulis Redis, dan mencetak hasilnya.package com.example; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; @Component public class RedisTestRunner implements CommandLineRunner { @Autowired private StringRedisTemplate stringRedisTemplate; @Override public void run(String... args) throws Exception { System.out.println("=== Memulai pengujian Redis dengan Spring Data Redis ==="); try { // Definisikan pasangan kunci-nilai. String key = "name"; String value = "spring-data-redis"; // 1. Jalankan perintah SET. stringRedisTemplate.opsForValue().set(key, value); System.out.println("SET " + key + " = " + value); // 2. Jalankan perintah GET. String retrievedValue = stringRedisTemplate.opsForValue().get(key); System.out.println("GET " + key + " = " + retrievedValue); // 3. Verifikasi hasilnya. if (value.equals(retrievedValue)) { System.out.println("Pengujian berhasil!"); } else { System.out.println("Pengujian gagal! Nilai yang diambil tidak sesuai."); } } catch (Exception e) { System.err.println("Operasi Redis gagal: " + e.getMessage()); e.printStackTrace(); } System.out.println("=== Pengujian Redis selesai ==="); } }
Java Config
Jika Anda menggunakan versi Spring yang lebih lama atau memiliki kebutuhan kustom, Anda dapat menggunakan kelas konfigurasi Java. Contoh berikut menggunakan
LettuceConnectionFactory, yang memungkinkan Anda menentukan username dan password secara terpisah.-
Struktur file proyek adalah sebagai berikut:
test_redis/ ├── pom.xml └── src/ └── main/ ├── java/ │ └── com/ │ └── example/ │ ├── config/ │ │ └── RedisConfig.java <-- Kelas konfigurasi inti │ ├── MainApplication.java │ └── RedisTestRunner.java └── resources/ └── application.yml <-- File ini dapat dihapus atau dibiarkan kosong. -
Buat kelas konfigurasi inti
RedisConfig.java. Di kelas ini, Anda membuat dan mengonfigurasi beanRedisConnectionFactorysecara manual dengan semua detail koneksi. Spring Boot secara otomatis mendeteksi bean ini dan menggunakannya untuk semua operasi terkait Redis, sepertiStringRedisTemplate.package com.example.config; 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.lettuce.LettuceConnectionFactory; @Configuration public class RedisConfig { @Bean public RedisConnectionFactory redisConnectionFactory() { // 1. Buat konfigurasi Redis standalone. RedisStandaloneConfiguration redisConfig = new RedisStandaloneConfiguration(); // 2. Atur detail koneksi Orca. // Ganti dengan endpoint Orca Anda. redisConfig.setHostName("pz-****************.rwlb.rds.aliyuncs.com"); // Port Orca. Nilai default adalah 6379. redisConfig.setPort(6379); // Ganti dengan username Orca Anda. redisConfig.setUsername("orca_user"); // Ganti dengan password Orca Anda. redisConfig.setPassword("orca_password"); // 3. Gunakan Lettuce sebagai client dan terapkan konfigurasi. LettuceConnectionFactory lettuceFactory = new LettuceConnectionFactory(redisConfig); // Opsional: Jika Anda tidak memanggil afterPropertiesSet(), kontainer Spring akan memanggilnya secara otomatis saat menginisialisasi bean. // lettuceFactory.afterPropertiesSet(); // 4. Kembalikan instance factory koneksi yang telah dikonfigurasi. return lettuceFactory; } } -
Buat kelas aplikasi utama
MainApplication.java. Ini adalah titik masuk untuk aplikasi Spring Boot.package com.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class MainApplication { public static void main(String[] args) { SpringApplication.run(MainApplication.class, args); } } -
Buat kelas runner pengujian
RedisTestRunner.java. Kelas ini secara otomatis berjalan setelah aplikasi Spring Boot dimulai, melakukan operasi baca-tulis Redis, dan mencetak hasilnya. package com.example; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; @Component public class RedisTestRunner implements CommandLineRunner { @Autowired private StringRedisTemplate stringRedisTemplate; @Override public void run(String... args) throws Exception { System.out.println("=== Memulai pengujian Redis dengan Spring Data Redis ==="); try { // Definisikan pasangan kunci-nilai. String key = "name"; String value = "spring-data-redis"; // 1. Jalankan perintah SET. stringRedisTemplate.opsForValue().set(key, value); System.out.println("SET " + key + " = " + value); // 2. Jalankan perintah GET. String retrievedValue = stringRedisTemplate.opsForValue().get(key); System.out.println("GET " + key + " = " + retrievedValue); // 3. Verifikasi hasilnya. if (value.equals(retrievedValue)) { System.out.println("Pengujian berhasil!"); } else { System.out.println("Pengujian gagal! Nilai yang diambil tidak sesuai."); } } catch (Exception e) { System.err.println("Operasi Redis gagal: " + e.getMessage()); e.printStackTrace(); } System.out.println("=== Pengujian Redis selesai ==="); } }
-
Python (redis-py)
-
Instal dependensi:
pip install redis -
Contoh kode:
redis-py4.2+ mendukung parameterusernameterpisah. Pada versi lama, berikan stringusername:passwordsebagai parameterpassword.import redis # Detail koneksi Orca host = 'pz-****************.rwlb.rds.aliyuncs.com' # Ganti dengan endpoint Orca Anda port = 6379 username = 'orca_user' # Ganti dengan username Orca Anda password = 'orca_password' # Ganti dengan password Orca Anda # Metode yang disarankan (redis-py >= 4.2) r = redis.Redis(host=host, port=port, username=username, password=password) # Metode kompatibilitas untuk versi lama # auth_password = f'{username}:{password}' # r = redis.Redis(host=host, port=port, password=auth_password) r.set('name', 'redis-py') print(r.get('name').decode('utf-8')) r.close()
Go (go-redis)
-
Instal dependensi:
go get github.com/go-redis/redis/v8 -
Contoh kode:
go-redismendukung bidangUsernameterpisah (disarankan). Pada versi lama, berikan stringusername:passwordsebagai bidangPassword.package main import ( "context" "fmt" "github.com/go-redis/redis/v8" ) var ctx = context.Background() func main() { client := redis.NewClient(&redis.Options{ Addr: "pz-****************.rwlb.rds.aliyuncs.com:6379", // Ganti dengan endpoint dan port Orca Anda Username: "orca_user", // Ganti dengan username Orca Anda Password: "orca_password", // Ganti dengan password Orca Anda DB: 0, }) err := client.Set(ctx, "name", "go-redis", 0).Err() if err != nil { panic(err) } val, err := client.Get(ctx, "name").Result() if err != nil { panic(err) } fmt.Println("Get value:", val) }
Node.js (node-redis)
-
Instal dependensi:
npm install redis -
Contoh kode:
node-redismendukung penyertaan informasi autentikasi dalam URL koneksi.import { createClient } from 'redis'; // Detail koneksi Orca const host = 'pz-****************.rwlb.rds.aliyuncs.com'; // Ganti dengan endpoint Orca Anda const port = 6379; const username = 'orca_user'; // Ganti dengan username Orca Anda const password = 'orca_password'; // Ganti dengan password Orca Anda const client = createClient({ url: `redis://${username}:${encodeURIComponent(password)}@${host}:${port}/0` }); client.on('error', (err) => console.error('Redis Client Error:', err)); async function runExample() { try { await client.connect(); await client.set('name', 'node-redis'); const value = await client.get('name'); console.log('get name:', value); } finally { await client.disconnect(); } } runExample();
PHP (PhpRedis)
-
Instal dependensi: Anda biasanya dapat menginstal ekstensi ini menggunakan Manajer paket. Misalnya, pada CentOS:
sudo yum install php-redis -
Contoh kode: Metode
authdari ekstensiPhpRedismendukung pengiriman array yang berisi username dan password.<?php $redis = new Redis(); // Detail koneksi Orca $host = 'pz-****************.rwlb.rds.aliyuncs.com'; // Ganti dengan endpoint Orca Anda $port = 6379; $user = 'orca_user'; // Ganti dengan username Orca Anda $password = 'orca_password'; // Ganti dengan password Orca Anda if ($redis->connect($host, $port) === false) { die($redis->getLastError()); } // Lakukan autentikasi dengan menggunakan array yang berisi username dan password. if ($redis->auth([$user, $password]) === false) { die($redis->getLastError()); } $redis->set("name", "php-redis"); echo $redis->get("name"); $redis->close(); ?>
C (Hiredis)
-
Instal dependensi: Kompilasi dan instal dari kode sumber.
git clone https://github.com/redis/hiredis.git cd hiredis make && sudo make install -
Contoh kode: Gunakan
redisCommanduntuk menjalankan perintahAUTH. Anda dapat menggunakan formatusername:password.#include <stdio.h> #include <stdlib.h> #include <string.h> #include <hiredis.h> int main() { // Parameter koneksi Orca const char *hostname = "********.rwlb.rds.aliyuncs.com"; // Ganti dengan endpoint Orca Anda int port = 6379; // Definisikan username dan password secara terpisah untuk kemudahan penggunaan. const char *username = "orca_user"; // Ganti dengan username Orca Anda const char *password = "orca_password"; // Ganti dengan password Orca Anda redisContext *c; redisReply *reply; // 1. Hubungkan ke Redis. Kami menyarankan agar Anda menggunakan koneksi dengan timeout. struct timeval timeout = { 2, 0 }; // Timeout 2 detik c = redisConnectWithTimeout(hostname, port, timeout); if (c == NULL || c->err) { if (c) { printf("Kesalahan koneksi: %s\n", c->errstr); redisFree(c); } else { printf("Tidak dapat mengalokasikan konteks redis\n"); } exit(1); } // 2. Lakukan autentikasi. // Gunakan format "AUTH <username> <password>". reply = redisCommand(c, "AUTH %s %s", username, password); if (reply == NULL) { // Jika reply bernilai NULL, terjadi kesalahan I/O. Periksa c->errstr. printf("Perintah AUTH gagal: %s\n", c->errstr); redisFree(c); exit(1); } // Periksa apakah reply itu sendiri merupakan tipe error. if (reply->type == REDIS_REPLY_ERROR) { printf("Autentikasi gagal: %s\n", reply->str); freeReplyObject(reply); redisFree(c); exit(1); } printf("Autentikasi berhasil\n"); freeReplyObject(reply); // Setelah autentikasi berhasil, jangan lupa bebaskan reply. // 3. Jalankan perintah SET. reply = redisCommand(c, "SET mykey %s", "Hello, hiredis!"); if (reply == NULL) { printf("Perintah SET gagal: %s\n", c->errstr); redisFree(c); exit(1); } // Untuk perintah SET yang berhasil, hiredis mengembalikan reply bertipe STATUS. if (reply->type == REDIS_REPLY_STATUS && strcmp(reply->str, "OK") == 0) { printf("SET mykey berhasil\n"); } else { printf("SET gagal dengan reply: %s\n", reply->str); } freeReplyObject(reply); // 4. Jalankan perintah GET. reply = redisCommand(c, "GET mykey"); if (reply == NULL) { printf("Perintah GET gagal: %s\n", c->errstr); redisFree(c); exit(1); } if (reply->type == REDIS_REPLY_STRING) { printf("GET mykey = %s\n", reply->str); } else if (reply->type == REDIS_REPLY_NIL) { printf("Kunci 'mykey' tidak ada\n"); } else { printf("GET mengembalikan tipe tak terduga: %d, error: %s\n", reply->type, reply->str); } freeReplyObject(reply); // 5. Tutup koneksi. redisFree(c); printf("Terputus dari Redis\n"); return 0; } -
Kompilasi dan jalankan program.
# Kompilasi. Sesuaikan path setelah -I dan -L berdasarkan lokasi instalasi Anda. gcc -o orca orca.c -I/usr/local/include/hiredis -L/usr/local/lib -lhiredis # Jalankan program. ./orca
Hubungkan dengan DMS
Hubungkan ke Orca
-
Klik Add, pilih Third-party Cloud/Self-managed, lalu pilih Redis dari bagian NoSQL Database.

-
Klik Next untuk menuju halaman informasi dasar. Konfigurasikan parameter sebagai berikut:
-
Untuk Instance Source, pilih VPC PrivateLine. Untuk Region, pilih wilayah tempat kluster PolarDB Anda berada atau wilayah terdekat. Untuk VPC ID, pilih ID VPC dari halaman detail kluster PolarDB. Untuk Logon Address, masukkan endpoint Orca.
-
Untuk Access Method, pilih Account + password login. Masukkan akun database dan password akun Orca Anda.
-
Setelah mengisi informasi, klik Test Connectivity. Pesan sukses akan muncul jika koneksi berhasil.

-
-
Klik Next untuk menuju halaman Advanced Information dan konfigurasikan pengaturan sesuai kebutuhan.
CatatanOrca saat ini tidak mendukung enkripsi SSL.

-
Klik Submit. Jika berhasil, instans Orca akan masuk ke mode Secure Management.

Kelola data
-
Pada bilah navigasi atas, pilih SQL Console dan pilih kluster Orca yang dikelola Anda.
-
Orca saat ini hanya mendukung satu database Redis logis, yaitu DB0. Jika Anda tidak melihat database DB0, klik Refresh / Sync Dictionary.

-
Anda sekarang dapat mengelola Orca menggunakan DMS.
Sebagai contoh, jalankan perintah
ping key01di SQL Console. Nilai kembaliPONGmenunjukkan koneksi berhasil.