golang redis操作


读取json文件,写入redis,再从redis读取,解析数据

json文件内容:

{
  "0x001":{"timestamp":1532432343, "value":0},
  "0x002":{"timestamp":1532432343, "value":0},
  "0x003":{"timestamp":1532432343, "value":0}
}

代码:

package main

import (
    "github.com/go-redis/redis"
    "github.com/json-iterator/go"
    "io/ioutil"
    "fmt"
)

type serviceProxy struct {
    redis *redis.Client
}

var Service *serviceProxy

func init() {
    Service = new(serviceProxy)
    initRedis()
}
func (s *serviceProxy) Close() {
    s.redis.Close()
}
func initRedis() {
    option, err := redis.ParseURL("redis://:@127.0.0.1:6379")
    if err != nil {
        panic(err)
    }
    Service.redis = redis.NewClient(option)
    println("redis services started")
}

type prse struct {
    Timestamp int64   `json:"timestamp"`
    Value     float64 `json:"value"`
}

func main() {
    defer func() {
        Service.redis.Close()
    }()

    // 读取json文件
    b, err := ioutil.ReadFile("./js.json")
    if err != nil {
        println(11)
    }
    // 解析
    var resp interface{}
    jsoniter.Unmarshal(b, &resp)

    // 转换成字符串
    strJson,_ := jsoniter.MarshalToString(resp)
    // 保存到redis
    Service.redis.HSet("mos.ups","id1", strJson)

    // 从redis读取
    s := Service.redis.HGetAll("mos.ups").Val()
    fmt.Println(55, s)

    // 解析从redis中读取的数据
    result := make(map[string]map[string]prse, 0)
    var parse map[string]prse
    for k, val := range s {
        jsoniter.Unmarshal([]byte(val), &parse)
        result[k] = parse
    }
    strResult, _ := jsoniter.MarshalToString(result)
    fmt.Println(123, strResult)
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM