Fitur Orca dari PolarDB for MySQL kompatibel dengan protokol Redis, sehingga memungkinkan Anda menghubungkan ke database menggunakan klien Redis utama. Topik ini menjelaskan prasyarat koneksi dan menyediakan contoh kode untuk klien dalam beberapa bahasa pemrograman umum.
Persiapan
Sebelum menghubungkan ke fitur Orca, lengkapi prasyarat berikut:
Kluster PolarDB Anda telah mengaktifkan fitur Orca.
Anda telah menambahkan alamat IP atau Blok CIDR klien ke daftar putih kluster PolarDB.
Anda telah membuat akun Orca khusus untuk mengakses fitur Orca.
Anda telah memperoleh alamat koneksi untuk fitur Orca.
Catatan
Perbedaan mekanisme autentikasi: Mekanisme autentikasi untuk fitur Orca berbeda dari Redis native. Orca tidak memiliki pengguna default; semua koneksi harus diautentikasi menggunakan akun Orca yang Anda buat di Konsol.
Kompatibilitas perintah AUTH: Untuk memastikan kompatibilitas dengan klien yang hanya mendukung autentikasi berbasis password, perintah
AUTHOrca mendukung dua format. Saat mengonfigurasi klien, pilih metode autentikasi yang sesuai dengan kemampuan klien tersebut.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 seluruh string tersebut sebagai parameter password.
Kompatibilitas perintah HELLO: Mirip dengan perintah
AUTH, bagian autentikasi dari perintahHELLOjuga mendukung kedua format yang disebutkan di atas.HELLO <protover> AUTH <username> <password>HELLO <protover> AUTH <username>:<password>
Hubungkan menggunakan redis-cli
Instal redis-cli: Instal redis-cli pada perangkat klien Anda. Untuk informasi lebih lanjut, lihat tutorial instalasi redis-cli.
Menghubungkan ke fitur Orca: Jalankan perintah berikut. Ganti alamat koneksi dan port dengan nilai aktual.
redis-cli -h pz-****************.rwlb.rds.aliyuncs.com -p 6379Mengautentikasi koneksi: Setelah koneksi berhasil, gunakan perintah
AUTHuntuk mengautentikasi. Kedua format berikut didukung. Ganti placeholder dengan username dan password Orca Anda.# Format 1: Masukkan username dan password secara terpisah AUTH orca_user orca_password # Format 2: Gabungkan username dan password, lalu masukkan hasilnya sebagai password AUTH orca_user:orca_passwordJika
OKdikembalikan, koneksi dan autentikasi berhasil.
Hubungkan menggunakan klien berbagai bahasa
Lihat contoh berikut untuk menghubungkan berdasarkan bahasa pemrograman aplikasi Anda.
Java (Jedis)
Tambahkan konfigurasi dependensi (Maven):
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>4.3.0</version> </dependency>Contoh kode: Untuk kompatibilitas dengan Jedis yang hanya menerima satu parameter password, gunakan 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(); // Informasi koneksi Orca String host = "pz-****************.rwlb.rds.aliyuncs.com"; // Ganti dengan alamat koneksi 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 mengharuskan Anda menggabungkan 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 konfigurasi 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 pengaturan username dan password secara terpisah. Metode ini direkomendasikan.
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) { // Informasi koneksi Orca String host = "pz-****************.rwlb.rds.aliyuncs.com"; // Ganti dengan alamat koneksi 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 pengaturan username dan password secara 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 konfigurasi dependensi (Maven):
<!-- Proyek induk Spring Boot untuk manajemen versi terpadu --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.18</version> <!-- Disarankan menggunakan versi stabil terbaru --> <relativePath/> </parent> <!-- Item 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 packaging dan menjalankan --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>Contoh kode: Pilih salah satu metode berikut untuk mengonfigurasi pengaturan dan menghubungkan ke Orca.
Konfigurasi melalui
application.ymlSpring Boot 2.x dan versi selanjutnya mendukung penentuan username dan password secara terpisah dalam
application.yml. Ini adalah metode yang direkomendasikan.Struktur file proyek sebagai berikut:
test_redis/ ├── pom.xml └── src/ └── main/ ├── java/ │ └── com/ │ └── example/ │ ├── MainApplication.java │ └── RedisTestRunner.java └── resources/ └── application.ymlKonfigurasi
application.yml: Buat fileapplication.ymldi direktorisrc/main/resources/. File ini menyimpan semua informasi konfigurasi.spring: redis: host: pz-****************.rwlb.rds.aliyuncs.com # Ganti dengan alamat koneksi 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: -1msBuat kelas startup utama
MainApplication.java: Ini adalah titik masuk 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 uji
RedisTestRunner.java: Kelas ini dijalankan secara otomatis setelah aplikasi Spring Boot dimulai. Kelas ini 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 uji 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 hasil if (value.equals(retrievedValue)) { System.out.println("Uji berhasil!"); } else { System.out.println("Uji gagal! Nilai yang diambil tidak sesuai."); } } catch (Exception e) { System.err.println("Operasi Redis gagal: " + e.getMessage()); e.printStackTrace(); } System.out.println("=== Uji Redis selesai ==="); } }
Konfigurasi menggunakan Java Config
Jika Anda menggunakan versi Spring yang lebih lama atau memiliki kebutuhan kustom, Anda dapat menggunakan kelas konfigurasi Java. Karena Jedis digunakan di lapisan bawah, Anda tetap perlu menggabungkan username dan password untuk autentikasi.
Struktur file proyek 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 bisa dihapus atau dibiarkan kosongBuat kelas konfigurasi inti
RedisConfig.java: Di kelas ini, Anda dapat membuat beanRedisConnectionFactorysecara manual dan menentukan semua detail koneksi. Spring Boot secara otomatis mendeteksi bean ini dan menggunakannya untuk mengonfigurasi 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 informasi koneksi Orca // Ganti dengan alamat koneksi Orca Anda redisConfig.setHostName("pz-****************.rwlb.rds.aliyuncs.com"); // Port Orca, default-nya 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 di atas LettuceConnectionFactory lettuceFactory = new LettuceConnectionFactory(redisConfig); // Opsional: Jika Anda tidak memanggil afterPropertiesSet, container Spring akan memanggilnya secara otomatis saat menginisialisasi bean. // lettuceFactory.afterPropertiesSet(); // 4. Kembalikan instance connection factory yang telah dikonfigurasi return lettuceFactory; } }Buat kelas startup utama
MainApplication.java: Ini adalah titik masuk 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 uji
RedisTestRunner.java: Kelas ini dijalankan secara otomatis setelah aplikasi Spring Boot dimulai. Kelas ini 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 uji 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 hasil if (value.equals(retrievedValue)) { System.out.println("Uji berhasil!"); } else { System.out.println("Uji gagal! Nilai yang diambil tidak sesuai."); } } catch (Exception e) { System.err.println("Operasi Redis gagal: " + e.getMessage()); e.printStackTrace(); } System.out.println("=== Uji Redis selesai ==="); } }
Python (redis-py)
Instal dependensi:
pip install redisContoh kode:
redis-pyversi 4.2 dan setelahnya mendukung parameterusernameterpisah. Jika Anda menggunakan versi sebelumnya, gunakan formatusername:passworduntuk parameterpassword.import redis # Informasi koneksi Orca host = 'pz-****************.rwlb.rds.aliyuncs.com' # Ganti dengan alamat koneksi Orca Anda port = 6379 username = 'orca_user' # Ganti dengan username Orca Anda password = 'orca_password' # Ganti dengan password Orca Anda # Metode yang direkomendasikan (redis-py >= 4.2) r = redis.Redis(host=host, port=port, username=username, password=password) # Metode untuk kompatibilitas dengan versi sebelumnya # 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/v8Contoh kode:
go-redismendukung fieldUsernameterpisah. Metode ini direkomendasikan. Jika Anda menggunakan versi klien yang lebih lama, gunakanusername:passwordsebagai nilai untuk fieldPassword.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 alamat 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 redisContoh kode:
node-redismendukung penyertaan informasi autentikasi dalam URL koneksi.import { createClient } from 'redis'; // Informasi koneksi Orca const host = 'pz-****************.rwlb.rds.aliyuncs.com'; // Ganti dengan alamat koneksi 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: Biasanya dapat diinstal menggunakan Manajer paket. Misalnya, pada CentOS:
sudo yum install php-redisContoh kode: Metode
authekstensiPhpRedismendukung pengiriman array yang berisi username dan password.<?php $redis = new Redis(); // Informasi koneksi Orca $host = 'pz-****************.rwlb.rds.aliyuncs.com'; // Ganti dengan alamat koneksi 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()); } // Autentikasi 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 installContoh kode: Gunakan
redisCommanduntuk menjalankan perintahAUTH. Anda dapat menggunakan format gabunganusername: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 alamat koneksi Orca Anda int port = 6379; // Definisikan username dan password secara terpisah agar mudah digunakan 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 (disarankan 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. 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.
# Kompilasi. Sesuaikan path setelah -I dan -L berdasarkan lokasi instalasi aktual Anda gcc -o orca orca.c -I/usr/local/include/hiredis -L/usr/local/lib -lhiredis # Jalankan ./orca
Hubungkan menggunakan DMS
Menghubungkan ke Orca
Klik Add, pilih Other Cloud/Self-managed, lalu pilih Redis dari bagian NoSQL Databases.

Klik Next untuk membuka halaman Basic Information. Konfigurasikan parameter seperti dijelaskan di bawah ini.
Atur Instance Source ke VPC Leased Line. Atur Instance Region ke wilayah tempat kluster PolarDB berada atau wilayah terdekat. Atur VPC ID ke VPC kluster PolarDB. Anda dapat menemukan VPC ID di halaman produk. Untuk Logon Address, masukkan alamat koneksi Orca.
Atur Access Mode ke Security Hosting + Manual. Di bidang Database Account dan Password, masukkan kredensial akun Orca.
Setelah memasukkan informasi, klik Test Connection. Jika pengujian berhasil, pesan sukses akan ditampilkan.

Klik Next untuk membuka halaman Advanced Information. Konfigurasikan pengaturan sesuai kebutuhan.
CatatanPerhatikan bahwa Orca saat ini tidak mendukung pengaktifan SSL.

Klik Submit. Jika pengiriman berhasil, instans Orca memasuki status security hosting.

Manajemen data
Pada bilah menu atas, klik SQL Window dan pilih kluster Orca yang berada dalam status security hosting.
Orca saat ini hanya mendukung satu database Redis logis, yaitu DB0. Jika Anda tidak melihat database saat ini DB0, klik Refresh / Sync Dictionary.

Jika tidak ditemukan anomali, Anda dapat menggunakan DMS untuk mengelola Orca.

