75 lines
1.9 KiB
Go
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!")
|
|
}
|