網頁

2024/4/30

Golang 簡單的Redis Queue實作

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
        },
    )
}

github



測試

執行印出以下。

job1
--------------------------------
job1
job2


沒有留言:

張貼留言