package main
import (
"go.etcd.io/etcd/clientv3"
"fmt"
"time"
"context"
"encoding/json"
)
type SecInfoConf struct {
ProductId int
StartTime int
EndTime int
Status int
Total int
Left int
}
const (
EtcdKey = "/190412/seckill/product"
)
func main() {
cli, err := clientv3.New(clientv3.Config{
Endpoints: []string{"127.0.0.1:2379"},
})
if err != nil {
fmt.Print(err)
return
}
defer cli.Close()
var secInfoConfList []SecInfoConf
secInfoConfList = append(secInfoConfList, SecInfoConf{
ProductId: 2000,
StartTime: int(time.Now().Unix()),
EndTime: int(time.Now().Add(time.Hour*24).Unix()),
Status: 0,
Total: 2000,
Left: 2000,
})
secInfoConfList = append(secInfoConfList, SecInfoConf{
ProductId: 2001,
StartTime: int(time.Now().Unix()),
EndTime: int(time.Now().Add(time.Hour*24).Unix()),
Status: 0,
Total: 800,
Left: 800,
})
data, _ := json.Marshal(secInfoConfList)
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
_, err = cli.Put(ctx, EtcdKey, string(data))
cancel()
if err != nil {
fmt.Print(err)
return
}
ctx, cancel = context.WithTimeout(context.Background(), time.Second)
r, err := cli.Get(ctx, EtcdKey)
cancel()
for _, v := range r.Kvs {
fmt.Printf("%s %s\n", v.Key, v.Value)
}
}