add redis cache to results
This commit is contained in:
@@ -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")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user