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 aktifvar 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);