]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/lib/redis.ts
Bumped to version v5.2.1
[github/Chocobozzz/PeerTube.git] / server / lib / redis.ts
index 3706d22282b7b27c7a9cbc1da12da2c05723dd56..8430b2227cfad5a3f7d52ffb88bdbe9a889acfe5 100644 (file)
@@ -32,7 +32,8 @@ class Redis {
     if (this.initialized === true) return
     this.initialized = true
 
-    logger.info('Connecting to redis...')
+    const redisMode = CONFIG.REDIS.SENTINEL.ENABLED ? 'sentinel' : 'standalone'
+    logger.info('Connecting to redis ' + redisMode + '...')
 
     this.client = new IoRedis(Redis.getRedisClientOptions('', { enableAutoPipelining: true }))
     this.client.on('error', err => logger.error('Redis failed to connect', { err }))
@@ -56,10 +57,25 @@ class Redis {
     this.prefix = 'redis-' + WEBSERVER.HOST + '-'
   }
 
-  static getRedisClientOptions (connectionName?: string, options: RedisOptions = {}): RedisOptions {
+  static getRedisClientOptions (name?: string, options: RedisOptions = {}): RedisOptions {
+    const connectionName = [ 'PeerTube', name ].join('')
+    const connectTimeout = 20000 // Could be slow since node use sync call to compile PeerTube
+
+    if (CONFIG.REDIS.SENTINEL.ENABLED) {
+      return {
+        connectionName,
+        connectTimeout,
+        enableTLSForSentinelMode: CONFIG.REDIS.SENTINEL.ENABLE_TLS,
+        sentinelPassword: CONFIG.REDIS.AUTH,
+        sentinels: CONFIG.REDIS.SENTINEL.SENTINELS,
+        name: CONFIG.REDIS.SENTINEL.MASTER_NAME,
+        ...options
+      }
+    }
+
     return {
-      connectionName: [ 'PeerTube', connectionName ].join(''),
-      connectTimeout: 20000, // Could be slow since node use sync call to compile PeerTube
+      connectionName,
+      connectTimeout,
       password: CONFIG.REDIS.AUTH,
       db: CONFIG.REDIS.DB,
       host: CONFIG.REDIS.HOSTNAME,