25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 
 

39 satır
975 B

  1. package presenseredis
  2. import (
  3. "context"
  4. "encoding/json"
  5. "fmt"
  6. "github.com/redis/go-redis/v9"
  7. )
  8. func LoadRedisMap[K comparable, V any, M map[K]V](client *redis.Client, ctx context.Context, key string) M {
  9. redisValue, err := client.Get(ctx, key).Result()
  10. resMap := make(M)
  11. if err == redis.Nil {
  12. fmt.Printf("No list found for key %s, starting empty\n", key)
  13. } else if err != nil {
  14. fmt.Printf("Error in connecting to Redis: %v, key: %s returning empty map\n", err, key)
  15. } else {
  16. if err := json.Unmarshal([]byte(redisValue), &resMap); err != nil {
  17. fmt.Printf("Error in unmarshalling JSON for key: %s\n", key)
  18. }
  19. }
  20. return resMap
  21. }
  22. func SaveRedisMap(client *redis.Client, ctx context.Context, key string, data interface{}) {
  23. eData, err := json.Marshal(data)
  24. if err != nil {
  25. fmt.Println("Error in marshalling, key: ", key)
  26. }
  27. err = client.Set(ctx, key, eData, 0).Err()
  28. if err != nil {
  29. fmt.Println("Error in persisting in Redis, key: ", key)
  30. }
  31. }