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

10 months ago
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())
}