You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

147 lines
3.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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