mirror of
				https://github.com/KevinMidboe/immich.git
				synced 2025-10-29 17:40:28 +00:00 
			
		
		
		
	feat(server): redis sentinel support (#2141)
* feat(server): redis sentinel initial support * feat(server): Lint fixes * Include example for Redis Sentinel. * Address PR comments
This commit is contained in:
		
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							51785a1ead
						
					
				
				
					commit
					23e4449f27
				
			| @@ -16,6 +16,11 @@ DB_DATABASE_NAME=immich | ||||
|  | ||||
| REDIS_HOSTNAME=immich_redis | ||||
|  | ||||
| # REDIS_URL will be used to pass custom options to ioredis. | ||||
| # Example for Sentinel | ||||
| # {"sentinels":[{"host":"redis-sentinel-node-0","port":26379},{"host":"redis-sentinel-node-1","port":26379},{"host":"redis-sentinel-node-2","port":26379}],"name":"redis-sentinel"} | ||||
| # REDIS_URL=ioredis://eyJzZW50aW5lbHMiOlt7Imhvc3QiOiJyZWRpcy1zZW50aW5lbDEiLCJwb3J0IjoyNjM3OX0seyJob3N0IjoicmVkaXMtc2VudGluZWwyIiwicG9ydCI6MjYzNzl9XSwibmFtZSI6Im15bWFzdGVyIn0= | ||||
|  | ||||
| # Optional Redis settings: | ||||
|  | ||||
| # Note: these parameters are not automatically passed to the Redis Container | ||||
| @@ -24,6 +29,7 @@ REDIS_HOSTNAME=immich_redis | ||||
|  | ||||
| # REDIS_PORT=6379 | ||||
| # REDIS_DBINDEX=0 | ||||
| # REDIS_USERNAME= | ||||
| # REDIS_PASSWORD= | ||||
| # REDIS_SOCKET= | ||||
|  | ||||
|   | ||||
| @@ -3,13 +3,27 @@ import { BullModuleOptions } from '@nestjs/bull'; | ||||
| import { RedisOptions } from 'ioredis'; | ||||
| import { ConfigurationOptions } from 'typesense/lib/Typesense/Configuration'; | ||||
|  | ||||
| export const redisConfig: RedisOptions = { | ||||
| function parseRedisConfig(): RedisOptions { | ||||
|   const redisUrl = process.env.REDIS_URL; | ||||
|   if (redisUrl && redisUrl.startsWith('ioredis://')) { | ||||
|     try { | ||||
|       const decodedString = Buffer.from(redisUrl.slice(10), 'base64').toString(); | ||||
|       return JSON.parse(decodedString); | ||||
|     } catch (error) { | ||||
|       throw new Error(`Failed to decode redis options: ${error}`); | ||||
|     } | ||||
|   } | ||||
|   return { | ||||
|     host: process.env.REDIS_HOSTNAME || 'immich_redis', | ||||
|     port: parseInt(process.env.REDIS_PORT || '6379'), | ||||
|     db: parseInt(process.env.REDIS_DBINDEX || '0'), | ||||
|     username: process.env.REDIS_USERNAME || undefined, | ||||
|     password: process.env.REDIS_PASSWORD || undefined, | ||||
|     path: process.env.REDIS_SOCKET || undefined, | ||||
| }; | ||||
|   }; | ||||
| } | ||||
|  | ||||
| export const redisConfig: RedisOptions = parseRedisConfig(); | ||||
|  | ||||
| export const bullConfig: BullModuleOptions = { | ||||
|   prefix: 'immich_bull', | ||||
|   | ||||
		Reference in New Issue
	
	Block a user