Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Penggunaan ServiceStack.Redis.Sentinel

Anda hanya boleh menyediakan host Server Redis Sentinel ke RedisSentinel karena mendapatkan daftar aktif server redis master/slave lainnya dari host Sentinel.

Beberapa perubahan pada RedisSentinel baru-baru ini ditambahkan di v4.0.37 latest terbaru yang sekarang tersedia di MyGet yang mencakup pencatatan ekstra dan panggilan balik acara Redis Sentinel. v4.0.37 yang baru API terlihat seperti:

var sentinel = new RedisSentinel(sentinelHost, masterName);

Memulai RedisSentinel akan terhubung ke Sentinel Host dan mengembalikan RedisClientManager yang telah dikonfigurasi sebelumnya (yaitu kumpulan koneksi redis) dengan

yang aktif
var redisManager = sentinel.Start();

Yang kemudian dapat Anda daftarkan di IOC dengan:

container.Register<IRedisClientsManager>(redisManager);

RedisSentinel kemudian harus mendengarkan perubahan master/slave dari host Sentinel dan melakukan failover redisManager demikian. Koneksi yang ada di pool kemudian dibuang dan diganti dengan pool baru untuk host yang baru dikonfigurasi. Setiap koneksi aktif di luar kumpulan mereka akan melemparkan pengecualian koneksi jika digunakan lagi, saat berikutnya RedisClient diambil dari kumpulan itu akan dikonfigurasi dengan host baru.

Callback dan Logging

Berikut adalah contoh bagaimana Anda dapat menggunakan callback baru untuk mengintrospeksi peristiwa RedisServer:

var sentinel = new RedisSentinel(sentinelHost, masterName)
{
    OnFailover = manager => 
    {
        "Redis Managers were Failed Over to new hosts".Print();
    },
    OnWorkerError = ex =>
    {
        "Worker error: {0}".Print(ex);
    },
    OnSentinelMessageReceived = (channel, msg) =>
    {
        "Received '{0}' on channel '{1}' from Sentinel".Print(channel, msg);
    },                
};

Logging dari peristiwa ini juga dapat diaktifkan dengan mengonfigurasi Logging di ServiceStack:

LogManager.LogFactory = new ConsoleLogFactory(debugEnabled:false);

Ada juga FailoverToSentinelHosts() eksplisit tambahan yang dapat digunakan untuk memaksa RedisSentinel untuk mencari ulang dan melakukan failover ke host master/slave terbaru, misalnya:

var sentinelInfo = sentinel.FailoverToSentinelHosts();

Host baru tersedia di sentinelInfo yang dikembalikan:

"Failed over to read/write: {0}, read-only: {1}".Print(
    sentinelInfo.RedisMasters, sentinelInfo.RedisSlaves);



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana SignalR.Redis bekerja di bawah tenda?

  2. Script Redis Lua mengimplementasikan CAS (check-and-set)?

  3. Mengatur bidang dinamis dalam Ohm / Redis

  4. hapus nilai hash redis secara massal berdasarkan nama kunci hash

  5. Redis dan Memcache atau hanya Redis?