add redis cache to results

This commit is contained in:
timka
2025-12-17 18:38:54 +03:00
parent 7bf909652b
commit f5f6c7850c
4 changed files with 89 additions and 17 deletions
+15 -2
View File
@@ -15,6 +15,7 @@ import (
"github.com/jmoiron/sqlx"
_ "github.com/lib/pq"
"github.com/redis/go-redis/v9"
"google.golang.org/grpc"
"google.golang.org/grpc/reflection"
)
@@ -30,6 +31,7 @@ type Server struct {
httpServer *http.Server
config *config.Config
db *sqlx.DB
redis *redis.Client
}
func New(cfg *config.Config) *Server {
@@ -45,6 +47,11 @@ func (s *Server) Start() error {
}
s.db = db
redisClient := redis.NewClient(&redis.Options{
Addr: s.config.RedisAddr,
})
s.redis = redisClient
go func() {
if err := s.startGRPCServer(); err != nil {
log.Fatalf("failed to start gRPC server: %v", err)
@@ -69,7 +76,7 @@ func (s *Server) startGRPCServer() error {
}
func (s *Server) registerGRPCServices() {
resultRepo := postgres.NewResultRepository(s.db.DB, nil, false)
resultRepo := postgres.NewResultRepository(s.db.DB, s.redis, s.config.CacheEnabled)
resultService := service.NewService(resultRepo)
resultHandler := grpcHandlers.NewResultsHandler(
resultService,
@@ -98,5 +105,11 @@ func (s *Server) Stop() {
}
}
if s.redis != nil {
if err := s.redis.Close(); err != nil {
log.Printf("failed to close redis connection: %v", err)
}
}
log.Println("results server stopped")
}
}