make redis more simple

dev
ajikamaludin 2 years ago
parent 38a2e3f750
commit 609ea4814c
Signed by: ajikamaludin
GPG Key ID: 476C9A2B4B794EBB

@ -35,7 +35,7 @@ var lock = &sync.Mutex{}
var configs *Configs var configs *Configs
func GetInstance() *Configs { func GetInstance() *Configs {
fmt.Println("configs", configs) fmt.Println("[CONFIG] : ", &configs)
if configs == nil { if configs == nil {
lock.Lock() lock.Lock()
configs = &Configs{ configs = &Configs{

@ -1,9 +1,6 @@
package handlers package handlers
import ( import (
"context"
"encoding/json"
"fmt"
"time" "time"
"github.com/ajikamaludin/go-fiber-rest/app/models" "github.com/ajikamaludin/go-fiber-rest/app/models"
@ -14,21 +11,11 @@ import (
"github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2"
) )
// need to optimize
var ctx = context.Background()
func GetAllNotes(c *fiber.Ctx) error { func GetAllNotes(c *fiber.Ctx) error {
var notes []models.Note var notes []models.Note
redis := redisclient.GetInstance() err := redisclient.Get("allnotes", &notes)
renotes, err := redis.Get(ctx, "allnotes").Result()
if err != nil {
fmt.Println("err", err)
}
err = json.Unmarshal([]byte(renotes), &notes)
if err != nil { if err != nil {
fmt.Println("[GetAllNotes][REDIS]Empty Notes")
db, err := gormdb.GetInstance() db, err := gormdb.GetInstance()
if err != nil { if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
@ -39,25 +26,7 @@ func GetAllNotes(c *fiber.Ctx) error {
} }
db.Find(&notes) db.Find(&notes)
val, err := json.Marshal(&notes) redisclient.Set("allnotes", &notes, 30*time.Second)
if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"status": constants.STATUS_FAIL,
"message": "Internal Service Error",
"error": err.Error(),
})
}
err = redis.Set(ctx, "allnotes", string(val), 30*time.Second).Err()
if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"status": constants.STATUS_FAIL,
"message": "Internal Service Error",
"error": err.Error(),
})
}
} else {
fmt.Println("[GetAllNotes][REDIS]Get Notes")
} }
return c.Status(fiber.StatusOK).JSON(fiber.Map{ return c.Status(fiber.StatusOK).JSON(fiber.Map{
@ -69,14 +38,17 @@ func GetAllNotes(c *fiber.Ctx) error {
func GetNoteById(c *fiber.Ctx) error { func GetNoteById(c *fiber.Ctx) error {
id := c.Params("id") id := c.Params("id")
note := models.Note{}
key := "note+" + id
err := redisclient.Get(key, &note)
if err != nil {
db, err := gormdb.GetInstance() db, err := gormdb.GetInstance()
if err != nil { if err != nil {
return err return err
} }
note := models.Note{}
err = db.First(&note, id).Error err = db.First(&note, id).Error
if err != nil { if err != nil {
@ -86,6 +58,9 @@ func GetNoteById(c *fiber.Ctx) error {
}) })
} }
redisclient.Set(key, &note, 30*time.Second)
}
return c.Status(fiber.StatusOK).JSON(fiber.Map{ return c.Status(fiber.StatusOK).JSON(fiber.Map{
"status": constants.STATUS_OK, "status": constants.STATUS_OK,
"message": "note found", "message": "note found",

@ -14,7 +14,7 @@ var lock = &sync.Mutex{}
var db *gorm.DB var db *gorm.DB
func GetInstance() (*gorm.DB, error) { func GetInstance() (*gorm.DB, error) {
fmt.Println("db", db) fmt.Println("[DATABASE] : ", db)
if db == nil { if db == nil {
configs := configs.GetInstance() configs := configs.GetInstance()

@ -1,8 +1,11 @@
package redisclient package redisclient
import ( import (
"context"
"encoding/json"
"fmt" "fmt"
"sync" "sync"
"time"
"github.com/ajikamaludin/go-fiber-rest/app/configs" "github.com/ajikamaludin/go-fiber-rest/app/configs"
"github.com/go-redis/redis/v8" "github.com/go-redis/redis/v8"
@ -10,9 +13,10 @@ import (
var lock = &sync.Mutex{} var lock = &sync.Mutex{}
var rdb *redis.Client var rdb *redis.Client
var ctx = context.Background()
func GetInstance() *redis.Client { func GetInstance() *redis.Client {
fmt.Println("redis client", rdb) fmt.Println("[REDIS] : ", &rdb)
if rdb == nil { if rdb == nil {
configs := configs.GetInstance() configs := configs.GetInstance()
addr := fmt.Sprintf("%s:%s", configs.Redisconfig.Host, configs.Redisconfig.Port) addr := fmt.Sprintf("%s:%s", configs.Redisconfig.Host, configs.Redisconfig.Port)
@ -26,3 +30,35 @@ func GetInstance() *redis.Client {
} }
return rdb return rdb
} }
func Get(key string, model interface{}) error {
redis := GetInstance()
fmt.Println("[REDIS][READ] : ", key)
renotes, err := redis.Get(ctx, key).Result()
if err != nil {
return err
}
err = json.Unmarshal([]byte(renotes), &model)
if err != nil {
return err
}
return nil
}
func Set(key string, model interface{}, expired time.Duration) error {
redis := GetInstance()
fmt.Println("[REDIS][WRITE] : ", key)
val, err := json.Marshal(&model)
if err != nil {
return err
}
err = redis.Set(ctx, key, string(val), expired).Err()
if err != nil {
return err
}
return nil
}

Loading…
Cancel
Save