package main
import (
"context"
"fmt"
mqtt "github.com/eclipse/paho.mqtt.golang"
"github.com/go-redis/redis/v8"
)
var ctx = context.Background()
type RedisClient interface {
rclient() *redis.Client
set(c *redis.Client, key string, value string) error
get(c *redis.Client, key string) (string, error)
//delete(c *redis.Client, key string) error
}
type redisclient struct {
Addr string
Password string
DB int
}
func (c *redisclient) rclient() *redis.Client {
rdb := redis.NewClient(&redis.Options{
Addr: c.Addr,
Password: c.Password,
DB: c.DB, // use default DB
})
return rdb
}
func (c *redisclient) set(rdb *redis.Client, key string, value string) error {
err := rdb.Set(ctx, key, value, 0).Err()
if err != nil {
return err
}
return nil
}
func (c *redisclient) get(rdb *redis.Client, key string) (string, error) {
value, err := rdb.Get(ctx, key).Result()
if err != nil {
return value, err
}
return value, nil
}
type MqClient interface {
cclient() mqtt.Client
sendMsg(clt mqtt.Client, topic string, message string) error
}
type mqttclient struct {
Addr string
}
func (c *mqttclient) cclient() mqtt.Client {
opts := mqtt.NewClientOptions().AddBroker(c.Addr).SetClientID("sample")
clt := mqtt.NewClient(opts)
return clt
}
func (c *mqttclient) sendMsg(clt mqtt.Client, topic string, message string) error {
if token := clt.Connect(); token.Wait() && token.Error() != nil {
//panic(token.Error())
return token.Error()
}
if token := clt.Publish(topic, 0, false, message); token.Wait() && token.Error() != nil {
//panic(token.Error())
return token.Error()
}
return nil
}
func NewRedisClt() RedisClient {
return &redisclient{Addr: "localhost:6379", Password: "", DB: 0}
}
func NewMqClient() MqClient {
return &mqttclient{Addr: "tcp://localhost:1883"}
}
func Run(q RedisClient, key string, value string) {
clt := q.rclient()
q.set(clt, key, value)
}
func get(q RedisClient, key string) {
clt := q.rclient()
value, err := q.get(clt, key)
if err != nil {
panic(err)
}
fmt.Println(value)
}
func main() {
var myclt = NewRedisClt()
clt := myclt.rclient()
value, err := myclt.get(clt, "name")
if err != nil {
panic(err)
}
mqclt := NewMqClient()
mqcltins := mqclt.cclient()
mqerr := mqclt.sendMsg(mqcltins, "TEST", value)
if mqerr != nil {
panic(mqerr)
}
}
Go redis mqtt
猜你喜欢
转载自blog.csdn.net/niekunhit/article/details/108778825
今日推荐
周排行