|
- package main
-
- import (
- "context"
- "encoding/json"
- "fmt"
- "reflect"
-
- "github.com/redis/go-redis/v9"
- )
-
- type Per struct {
- Name string `json:"name"`
- Age int `json:"age"`
- }
-
- type Beacon struct {
- ID string `json:"id"` // Use JSON tags to ensure correct field names
- Type string `json:"type"`
- Temp int `json:"temp"`
- Name string `json:"name"`
- }
-
- func ConvertStructToMap(obj any) (map[string]any, error) {
- // 1. Marshal the struct into a JSON byte slice
- data, err := json.Marshal(obj)
- if err != nil {
- return nil, err
- }
-
- // 2. Unmarshal the JSON byte slice into the map
- var result map[string]any
- err = json.Unmarshal(data, &result)
- if err != nil {
- return nil, err
- }
-
- return result, nil
- }
-
- // func main() { ... }
- // client.HSet(ctx, "beacon:123", resultMap).Err()
-
- func main() {
- client := redis.NewClient(&redis.Options{
- Addr: "127.0.0.1:6379",
- Password: "",
- })
-
- ctx := context.Background()
-
- err := client.Set(ctx, "testkey", "hello world", 0).Err()
- if err != nil {
- fmt.Println("Ok")
- }
-
- val, err := client.Get(ctx, "testkey").Result()
- if err != nil {
- fmt.Println("Ok")
- }
- fmt.Println(val)
-
- err = client.SAdd(ctx, "myset", "b-1").Err()
- if err != nil {
- fmt.Println(err)
- }
-
- res, err := client.SMembers(ctx, "myset").Result()
- if err != nil {
- fmt.Println(err)
- }
- fmt.Println("res1: ", res)
-
- err = client.SAdd(ctx, "myset", "b-2").Err()
- if err != nil {
- fmt.Println(err)
- }
-
- res, err = client.SMembers(ctx, "myset").Result()
- if err != nil {
- fmt.Println(err)
- }
- fmt.Println("res1: ", res)
-
- err = client.SAdd(ctx, "myset", "b-1").Err()
- if err != nil {
- fmt.Println(err)
- }
-
- res, err = client.SMembers(ctx, "myset").Result()
- if err != nil {
- fmt.Println(err)
- }
- fmt.Println("res1: ", res)
- fmt.Println("type: ", reflect.TypeOf(res))
-
- // b := Beacon{
- // ID: "hello",
- // Type: "node",
- // Temp: 10,
- // Name: "Peter",
- // }
-
- // per := Per{
- // Name: "Janez",
- // Age: 10,
- // }
-
- // bEncoded, err := ConvertStructToMap(b)
- // if err != nil {
- // fmt.Print("error\n")
- // }
-
- // perEncoded, err := ConvertStructToMap(per)
- // if err != nil {
- // fmt.Print("error\n")
- // }
-
- // err = client.HSet(ctx, "myhash", bEncoded).Err()
- // fmt.Println(err)
-
- // res, _ := client.HGetAll(ctx, "myhash").Result()
- // fmt.Println(res)
-
- // err = client.HSet(ctx, "myhash", perEncoded).Err()
- // fmt.Println(err)
-
- // res, _ = client.HGetAll(ctx, "myhash").Result()
- // fmt.Println(res)
-
- }
|