Go實作簡單的Redis Queue。
利用redis.Client.LPush
(LPUSH
)從Lists頭部(左側)放入資料、redis.Client.RPop
(RPOP
)從Lists尾部(右側)取出資料來實現queue。
main.go
package main
import (
"context"
"fmt"
"github.com/go-redis/redis/v9"
)
func main() {
ctx := context.Background()
client := NewRedisClient()
key := "tasks"
client.LPush(ctx, key, "job1", "job2") // enqueue
jobs := client.LRange(ctx, key, -1, -1).Val() // peek
fmt.Println(jobs[0]) // job1
fmt.Println("--------------------------------")
for client.LLen(ctx, key).Val() > 0 {
job := client.RPop(ctx, key).Val() // dequeue
fmt.Println(job)
}
}
func NewRedisClient() *redis.Client {
return redis.NewClient(
&redis.Options{
Addr: "localhost:6379",
Password: "12345",
DB: 0, // use default DB
},
)
}
測試
執行印出以下。
job1
--------------------------------
job1
job2
沒有留言:
張貼留言