You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							40 lines
						
					
					
						
							1.0 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							40 lines
						
					
					
						
							1.0 KiB
						
					
					
				
								// 文件: storage/redis.go
							 | 
						|
								package storage
							 | 
						|
								
							 | 
						|
								import (
							 | 
						|
									"context"
							 | 
						|
									"fmt"
							 | 
						|
									"log"
							 | 
						|
									"memobus_relay_server/config"
							 | 
						|
								
							 | 
						|
									"github.com/redis/go-redis/v9"
							 | 
						|
								)
							 | 
						|
								
							 | 
						|
								// 全局 Redis 客户端实例
							 | 
						|
								var RedisClient *redis.Client
							 | 
						|
								
							 | 
						|
								// InitRedis 初始化全局的 Redis 客户端连接
							 | 
						|
								// 这个函数现在是唯一的 Redis 初始化入口
							 | 
						|
								func InitRedis() error {
							 | 
						|
									// 如果配置中未启用 Redis,则不进行任何操作
							 | 
						|
									if !config.Cfg.Redis.Enabled {
							 | 
						|
										log.Println("Redis is disabled in config. Skipping initialization.")
							 | 
						|
										return nil
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									// 创建一个新的 Redis 客户端实例
							 | 
						|
									RedisClient = redis.NewClient(&redis.Options{
							 | 
						|
										Addr:     config.Cfg.Redis.Addr,
							 | 
						|
										Password: config.Cfg.Redis.Password,
							 | 
						|
										DB:       config.Cfg.Redis.DB,
							 | 
						|
									})
							 | 
						|
								
							 | 
						|
									// 测试连接,确保 Redis 服务可用
							 | 
						|
									if err := RedisClient.Ping(context.Background()).Err(); err != nil {
							 | 
						|
										// 将错误包装后返回,让 main 函数决定如何处理
							 | 
						|
										return fmt.Errorf("failed to connect to Redis: %w", err)
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									log.Println("Successfully connected to Redis.")
							 | 
						|
									return nil
							 | 
						|
								}
							 | 
						|
								
							 |