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