package main import ( "context" "fmt" "github.com/go-redis/redis/v9" "time" ) func main() { // 插入和获取(头部和尾部,左边和右边,L和R) //pushPop() // 基于索引操作 //index() // 两个队列元素传递 //two() // 支持阻塞的操作 block() } func block() { opt, err := redis.ParseURL("redis://default:yourPassword@192.168.157.135:6379/0?dial_timeout=1") if err != nil { panic(err) } client := redis.NewClient(opt) ctx := context.Background() // non-block client.Del(ctx, "list-src", "list-dest") //client.LPush(ctx, "list-src", "GO", "Redis", "MySQL") fmt.Println(client.LPop(ctx, "list-src").Result()) // block fmt.Println(client.BLPop(ctx, 10*time.Second, "list-src").Result()) } func two() { opt, err := redis.ParseURL("redis://default:yourPassword@192.168.157.135:6379/0?dial_timeout=1") if err != nil { panic(err) } client := redis.NewClient(opt) ctx := context.Background() client.Del(ctx, "list-src", "list-dest") client.LPush(ctx, "list-src", "GO", "Redis", "MySQL") client.LPush(ctx, "list-dest", "Docker", "K8S", "CI/CD") // rpoplpush //client.RPopLPush(ctx, "list-src", "list-dest") //fmt.Println(client.LRange(ctx, "list-src", 0, -1).Result()) //fmt.Println(client.LRange(ctx, "list-dest", 0, -1).Result()) // move client.LMove(ctx, "list-src", "list-dest", "RIGHT", "LEFT") fmt.Println(client.LRange(ctx, "list-src", 0, -1).Result()) fmt.Println(client.LRange(ctx, "list-dest", 0, -1).Result()) } // 基于索引操作 func index() { opt, err := redis.ParseURL("redis://default:yourPassword@192.168.157.135:6379/0?dial_timeout=1") if err != nil { panic(err) } client := redis.NewClient(opt) ctx := context.Background() client.Del(ctx, "subjects") client.LPush(ctx, "subjects", "GO", "Redis", "MySQL", "Go-Redis", "Go-Redis", "K8S", "CI/CD") fmt.Println(client.LRange(ctx, "subjects", 0, -1).Result()) fmt.Println(client.LIndex(ctx, "subjects", 3)) client.LSet(ctx, "subjects", 3, "Go-Redis") fmt.Println(client.LRange(ctx, "subjects", 0, -1).Result()) //client.LInsert(ctx, "subjects", "BEFORE", "Go-Redis", "NewSubject") client.LInsert(ctx, "subjects", "AFTER", "Go-Redis", "NewSubject") fmt.Println(client.LRange(ctx, "subjects", 0, -1).Result()) client.LTrim(ctx, "subjects", 2, 4) fmt.Println(client.LRange(ctx, "subjects", 0, -1).Result()) } // 插入和获取(头部和尾部,左边和右边,L和R) func pushPop() { opt, err := redis.ParseURL("redis://default:yourPassword@192.168.157.135:6379/0?dial_timeout=1") if err != nil { panic(err) } client := redis.NewClient(opt) ctx := context.Background() // //client.LTrim(ctx, "subjects", -1, 0) client.Del(ctx, "subjects") // 插入 client.LPush(ctx, "subjects", "GO") // 获取长度 //fmt.Println(client.LLen(ctx, "subjects").Result()) client.LPush(ctx, "subjects", "Redis", "MySQL") client.LPush(ctx, "subjects", "Redis", "MySQL") client.LPush(ctx, "subjects", "Redis", "MySQL") client.RPush(ctx, "subjects", "Docker") // 获取长度 //fmt.Println(client.LLen(ctx, "subjects").Result()) client.RPush(ctx, "subjects", "K8S", "CI/CD") // 获取长度 //fmt.Println(client.LLen(ctx, "subjects").Result()) // 查看 fmt.Println(client.LRange(ctx, "subjects", 0, -1).Result()) // 删除元素 // count: // >0, 从头部开始删除 count 个 // <0, 从尾部开始删除 count 个 // =0, 删除全部 client.LRem(ctx, "subjects", 0, "MySQL") // 插入,前提是 key 要存在 //fmt.Println(client.LPushX(ctx, "subjects", "GO").Result()) // 查看 fmt.Println(client.LRange(ctx, "subjects", 0, -1).Result()) // 取出 // Get and Del //fmt.Println(client.LPop(ctx, "subjects").Result()) //fmt.Println(client.LRange(ctx, "subjects", 0, -1).Result()) //fmt.Println(client.RPop(ctx, "subjects").Result()) //fmt.Println(client.LRange(ctx, "subjects", 0, -1).Result()) //fmt.Println(client.RPopCount(ctx, "subjects", 3).Result()) //fmt.Println(client.LRange(ctx, "subjects", 0, -1).Result()) }