1年前
⋅
0
package RedisClient
import (
"fmt"
"github.com/go-redis/redis"
"math/rand"
"time"
)
// 队列的key
var queueKey = "queue:message"
var rdb *redis.Client
func NewClient() {
rdb = redis.NewClient(&redis.Options{
Addr: "127.0.0.1:6379",
Password: "",
})
pong, err := rdb.Ping().Result()
if err != nil {
fmt.Println(err)
}
fmt.Println(pong, "redis success.")
}
// 使用list生产消息
func ProducerMessageList() {
rand.Seed(time.Now().UnixNano())
fmt.Println("开启生产者。。。。")
for i := 0; i < 10; i++ {
score := time.Now().Unix()
fmt.Println("正在生产一条消息...", score, i)
_, err := rdb.LPush(queueKey, i).Result()
if err != nil {
fmt.Println(err)
}
time.Sleep(time.Duration(rand.Intn(3)) * time.Second)
}
}
// 使用list格式接收消息
func ConsumerMessageList() {
for {
// 设置一个5秒的超时时间
value, err := rdb.BRPop(5*time.Second, queueKey).Result()
if err == redis.Nil {
// 查询不到数据,跳过
time.Sleep(1 * time.Second)
continue
}
if err != nil {
// 查询出错,跳过
time.Sleep(1 * time.Second)
continue
}
fmt.Println("接收到数据:", value, "当前时间是:", time.Now().Unix())
time.Sleep(time.Second)
}
}