Files
upkg/example/redis-cache/simple-test.go
2026-01-28 10:28:13 +08:00

75 lines
1.9 KiB
Go

package main
import (
"context"
"fmt"
"log"
"time"
"gitea.loveuer.com/loveuer/upkg/database/cache"
)
func main() {
fmt.Println("=== Redis Cache Package Test ===")
// 创建配置
config := cache.NewConfig("redis", "redis-headless.redis-demo.svc.cluster.local:6379")
config.MasterAddr = "redis-0.redis-headless.redis-demo.svc.cluster.local:6379"
config.ReplicaAddrs = []string{
"redis-1.redis-headless.redis-demo.svc.cluster.local:6379",
"redis-2.redis-headless.redis-demo.svc.cluster.local:6379",
}
config.Reconnect = true
config.ReconnectInterval = 10 * time.Second
// 连接 Redis
redisCache, err := cache.NewRedis(config)
if err != nil {
log.Fatalf("Failed to connect to Redis: %v", err)
}
defer redisCache.Close()
fmt.Println("✅ Connected to Redis cluster")
// 测试基本操作
ctx := context.Background()
// SET/GET
err = redisCache.Set(ctx, "test-key", "hello-world", 0)
if err != nil {
log.Printf("SET error: %v", err)
} else {
val, _ := redisCache.Get(ctx, "test-key")
fmt.Printf("✅ SET/GET: %s\n", val)
}
// Hash 操作
err = redisCache.HSet(ctx, "user:1", "name", "张三")
if err == nil {
redisCache.HSet(ctx, "user:1", "age", "25")
name, _ := redisCache.HGet(ctx, "user:1", "name")
age, _ := redisCache.HGet(ctx, "user:1", "age")
fmt.Printf("✅ HSET/HGET: name=%s, age=%s\n", name, age)
}
// 计数器
redisCache.Set(ctx, "counter", "0")
count1, _ := redisCache.Inc(ctx, "counter")
count2, _ := redisCache.IncBy(ctx, "counter", 5)
fmt.Printf("✅ INCR/INCRBY: %d, %d\n", count1, count2)
// 测试重连
fmt.Println("🔄 Testing reconnection (will check every 10 seconds)...")
time.Sleep(35 * time.Second)
// 再次测试操作,验证重连功能
testVal, err := redisCache.Get(ctx, "test-key")
if err != nil {
fmt.Printf("❌ Reconnection failed: %v\n", err)
} else {
fmt.Printf("✅ Reconnection successful: %s\n", testVal)
}
fmt.Println("🎉 All tests completed successfully!")
}