Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 

96 lignes
1.7 KiB

  1. package main
  2. import (
  3. "context"
  4. "encoding/json"
  5. "fmt"
  6. "github.com/redis/go-redis/v9"
  7. )
  8. type Per struct {
  9. Name string `json:"name"`
  10. Age int `json:"age"`
  11. }
  12. type Beacon struct {
  13. ID string `json:"id"` // Use JSON tags to ensure correct field names
  14. Type string `json:"type"`
  15. Temp int `json:"temp"`
  16. Name string `json:"name"`
  17. }
  18. func ConvertStructToMap(obj any) (map[string]any, error) {
  19. // 1. Marshal the struct into a JSON byte slice
  20. data, err := json.Marshal(obj)
  21. if err != nil {
  22. return nil, err
  23. }
  24. // 2. Unmarshal the JSON byte slice into the map
  25. var result map[string]any
  26. err = json.Unmarshal(data, &result)
  27. if err != nil {
  28. return nil, err
  29. }
  30. return result, nil
  31. }
  32. // func main() { ... }
  33. // client.HSet(ctx, "beacon:123", resultMap).Err()
  34. func main() {
  35. client := redis.NewClient(&redis.Options{
  36. Addr: "127.0.0.1:6379",
  37. Password: "",
  38. })
  39. ctx := context.Background()
  40. err := client.Set(ctx, "testkey", "hello world", 0).Err()
  41. if err != nil {
  42. fmt.Println("Ok")
  43. }
  44. val, err := client.Get(ctx, "testkey").Result()
  45. if err != nil {
  46. fmt.Println("Ok")
  47. }
  48. fmt.Println(val)
  49. b := Beacon{
  50. ID: "hello",
  51. Type: "node",
  52. Temp: 10,
  53. Name: "Peter",
  54. }
  55. per := Per{
  56. Name: "Janez",
  57. Age: 10,
  58. }
  59. bEncoded, err := ConvertStructToMap(b)
  60. if err != nil {
  61. fmt.Print("error\n")
  62. }
  63. perEncoded, err := ConvertStructToMap(per)
  64. if err != nil {
  65. fmt.Print("error\n")
  66. }
  67. err = client.HSet(ctx, "myhash", bEncoded).Err()
  68. fmt.Println(err)
  69. res, _ := client.HGetAll(ctx, "myhash").Result()
  70. fmt.Println(res)
  71. err = client.HSet(ctx, "myhash", perEncoded).Err()
  72. fmt.Println(err)
  73. res, _ = client.HGetAll(ctx, "myhash").Result()
  74. fmt.Println(res)
  75. }