全部产品
Search
文档中心

Tair (Redis® OSS-Compatible):Gunakan mode kompatibel Sentinel untuk terhubung ke instans

更新时间:Nov 10, 2025

Tair (Redis OSS-compatible) menggunakan komponen layanan ketersediaan tinggi (HA) yang dikembangkan sendiri dan tidak bergantung pada Sentinel. Namun, untuk meningkatkan kompatibilitas instans dan mengurangi modifikasi kode, Tair (Redis OSS-compatible) menyediakan mode kompatibel Sentinel. Setelah mengaktifkan fitur ini, Anda dapat terhubung ke Tair (dan Redis Edisi Open-Source) dengan cara yang sama seperti saat terhubung ke open-source Redis Sentinel.

Pengenalan Redis Sentinel

Redis Sentinel menyediakan pemantauan, peringatan, dan layanan failover otomatis untuk instans master dan replika di open-source Redis. Banyak skenario bisnis yang menggunakan database Redis yang dikelola sendiri dan memerlukan keandalan tinggi menggunakan Sentinel. Untuk memfasilitasi migrasi database Redis ke cloud dalam skenario ini, Alibaba Cloud telah mengembangkan mode kompatibel Sentinel. Setelah mengaktifkan mode kompatibel Sentinel, Anda dapat menggunakan perintah terkait Sentinel berikut (Master name dalam perintah berikut harus tetap sebagai redis_master):

Perintah

Deskripsi

SENTINEL sentinels

Mengevaluasi instans Sentinel dari Master tertentu dan status instans Sentinel tersebut. Sintaks berikut digunakan:

SENTINEL sentinels redis_master

SENTINEL get-master-addr-by-name

Mengevaluasi alamat IP dan nomor port dari Master tertentu. Sintaks berikut digunakan:

SENTINEL get-master-addr-by-name redis_master

Untuk informasi tentang dukungan perintah terkait Sentinel di versi berbeda, lihat Dukungan perintah Redis Edisi Open-Source.

Prasyarat

Contoh koneksi

Setelah mengaktifkan mode kompatibel Sentinel, Anda dapat terhubung ke instans dengan dua cara: Jika akses tanpa kata sandi melalui virtual private cloud (VPC) diaktifkan untuk instans, Anda dapat terhubung ke instans dalam mode tanpa kata sandi melalui Sentinel. Jika akses tanpa kata sandi tidak diaktifkan, Anda perlu mengonfigurasi informasi autentikasi saat terhubung.

Koneksi tanpa kata sandi melalui Sentinel

Catatan

Untuk informasi lebih lanjut tentang cara mengaktifkan akses tanpa kata sandi melalui VPC, lihat Aktifkan akses tanpa kata sandi melalui VPC.

Contoh berikut menunjukkan cara mengonfigurasi kode untuk terhubung ke Alibaba Cloud Redis dalam mode kompatibel Sentinel.

Spring Data Redis

Dalam contoh ini, Spring Data Redis 2.4.2 digunakan.

    @Bean
    public JedisConnectionFactory connectionFactory() {
        RedisSentinelConfiguration sentinelConfig = new RedisSentinelConfiguration()
                .master("redis_master")
                .sentinel("r-bp10noxlhcoim2****.redis.rds.aliyuncs.com", 6379);
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        ...
        JedisConnectionFactory connectionFactory = new JedisConnectionFactory(sentinelConfig, poolConfig);
        return connectionFactory;
    }

Deskripsi parameter:

  • master: nama SENTINEL, yang harus tetap sebagai redis_master.

  • sentinel: titik akhir VPC dan nomor port dari instans, dipisahkan oleh koma (,), seperti "r-bp10noxlhcoim2****.redis.rds.aliyuncs.com", 6379.

redis-py

Dalam contoh ini, Python 3.9 dan redis-py 4.3.6 digunakan.

from redis.sentinel import Sentinel
SENTINEL_HOST = "r-bp10noxlhcoim2****.redis.rds.aliyuncs.com"
SENTINEL_PORT = 6379
SENTINEL_MASTER_NAME = "redis_master"

sentinel = Sentinel([(SENTINEL_HOST, SENTINEL_PORT)])
r = sentinel.master_for(SENTINEL_MASTER_NAME, db=0)
r.set('foo', 'bar')
print(r.get('foo'))

Deskripsi parameter:

  • SENTINEL_HOST dan SENTINEL_PORT: titik akhir VPC dan nomor port dari instans.

  • SENTINEL_MASTER_NAME: nama SENTINEL, yang harus tetap sebagai redis_master.

Koneksi berbasis kata sandi melalui Sentinel

Contoh berikut menunjukkan cara mengonfigurasi kode untuk terhubung ke Alibaba Cloud Redis dalam mode kompatibel Sentinel.

Java

Contoh ini menggunakan versi minimum klien Java. Persyaratan versi klien adalah sebagai berikut:

  • Jedis 3.6.1 atau lebih baru.

  • Lettuce 6.3.0.RELEASE atau lebih baru.

  • Spring Data Redis 2.5.1 atau lebih baru. Anda juga perlu mengonfigurasi parameter spring.redis.sentinel.password.

Catatan

Kami sangat menyarankan Anda untuk meningkatkan ke versi klien stabil terbaru. Untuk versi terbaru, cari di MVN Repository.

Jedis

        String masterName = "redis_master";
        Set<String> sentinels = new HashSet<>();
        sentinels.add("r-bp10noxlhcoim2****.redis.rds.aliyuncs.com:6379");
        GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
        String dbPassword = "testaccount:Rp829dlwa";
        String sentinelPassword = "testaccount:Rp829dlwa";
        JedisSentinelPool jedisSentinelPool =
                new JedisSentinelPool(masterName, sentinels, poolConfig,
                        2000, 2000, dbPassword,
                        0, null, 2000, 2000,
                        sentinelPassword, null);

Lettuce

    String masterName = "redis_master";
    String sentinelNodes = "r-bp10noxlhcoim2****.redis.rds.aliyuncs.com:6379";
    String sentinelPassword = "testaccount:Rp829dlwa";
    RedisURI redisURI = RedisURI.create("redis-sentinel://" + sentinelPassword + "@" + sentinelNodes + "#" + masterName);
    redisURI.getSentinels().forEach(it -> it.setPassword(sentinelPassword));
    RedisClient client = RedisClient.create(redisURI);
    RedisCommands<String, String> sync = client.connect().sync();
    System.out.println(sync.set("key", "value"));
    System.out.println(sync.get("key"));
    client.close();

Deskripsi parameter:

  • masterName: nama SENTINEL, yang harus tetap sebagai redis_master.

  • sentinels.add/sentinelNodes: titik akhir VPC dan nomor port dari instans, dalam format r-bp10noxlhcoim2****.redis.rds.aliyuncs.com:6379.

  • dbPassword dan sentinelPassword: kata sandi akun instans. Format kata sandi bervariasi tergantung pada akun yang Anda pilih. Jika Anda lupa kata sandi, Anda dapat menyetel ulang. Untuk informasi lebih lanjut, lihat Ubah atau setel ulang kata sandi.

    Catatan
    • Akun default (akun bernama setelah ID instans): Masukkan kata sandi secara langsung.

    • Akun baru dibuat: Format kata sandi adalah <user>:<password>. Akun default juga mendukung metode autentikasi ini. Misalnya, jika akun kustom adalah testaccount dan kata sandi adalah Rp829dlwa, kata sandi harus dimasukkan sebagai testaccount:Rp829dlwa.

redis-py

Dalam contoh ini, Python 3.9 dan redis-py 4.3.6 digunakan.

from redis.sentinel import Sentinel
SENTINEL_HOST = "r-bp10noxlhcoim2****.rds.aliyuncs.com"
SENTINEL_PORT = 6379
SENTINEL_MASTER_NAME = "redis_master"  # Catatan: Nama ini tidak dapat diubah
SENTINEL_REDIS_PWD = "testaccount:Rp829dlwa"

conf = {
    'password': SENTINEL_REDIS_PWD,
}

sentinel = Sentinel([(SENTINEL_HOST, SENTINEL_PORT)], sentinel_kwargs=conf)
r = sentinel.master_for(SENTINEL_MASTER_NAME, db=0, **conf)
r.set('foo', 'bar')
print(r.get('foo'))

Deskripsi parameter:

  • SENTINEL_HOST dan SENTINEL_PORT: titik akhir VPC dan nomor port dari instans.

  • SENTINEL_MASTER_NAME: nama SENTINEL, yang harus tetap sebagai redis_master.

  • SENTINEL_REDIS_PWD: kata sandi akun instans.

FAQ

  • T: Sebelumnya saya menggunakan mode Redis Sentinel yang dikelola sendiri. Setelah beralih ke mode kompatibel Redis Sentinel, saya menemui kesalahan NOAUTH Autentikasi diperlukan. Bagaimana cara menyelesaikan masalah ini?

    J: Anda dapat mengaktifkan parameter #no_loose_sentinel-password-free-access (atur ke ya) untuk menerapkan koneksi tanpa kata sandi melalui Sentinel melalui alamat koneksi VPC tanpa mengaktifkan fitur bebas kata sandi VPC.

    Jika instans Anda menjalankan Redis 6.0 atau lebih lama, tingkatkan klien Anda dan modifikasi beberapa kode untuk menambahkan kata sandi autentikasi Sentinel, lalu coba lagi. Untuk informasi lebih lanjut, lihat Koneksi berbasis kata sandi melalui Sentinel dalam topik ini.

  • T: Mengapa saya menerima kesalahan Unknown sentinel subcommand 'MASTERS'?

    J: Versi minor lama tidak kompatibel dengan beberapa perintah. Perbarui versi minor dan coba lagi.