package main

import (
	"fmt"
	"time"

	"github.com/go-redis/redis"
)

func main() {
	// 创建Redis客户端
	client := redis.NewClient(&redis.Options{
		Addr:     "localhost:6379", // Redis服务器地址
		Password: "",               // Redis服务器密码
		DB:       0,                // Redis数据库索引
	})

	pong, err := client.Ping().Result()
	if err != nil {
		panic(err)
	}
	println(pong)
	// 设置键值对
	err = client.Set("yzk_study@163.com", "123456", 600*time.Second).Err()
	if err != nil {
		panic(err)
	}
	// 获取键值对
	val, err := client.Get("yzk_study@163.com").Result()
	if err != nil {
		panic(err)
	}
	println(val)
	// 删除键值对
	err = client.Del("yzk_study@163.com").Err()
	if err != nil {
		panic(err)
	}
	// 设置哈希字段
	client.HMSet("user:1", map[string]interface{}{"name": "Bob", "age": 30})

	// 获取哈希字段
	age, err := client.HGet("user:1", "age").Int()
	if err != nil {
		panic(err)
	}
	fmt.Println("User age:", age) // 输出: User age: 30
	// 向列表尾部添加元素
	client.RPush("tasks", "task1", "task2")
	// 获取列表范围
	tasks, err := client.LRange("tasks", 0, -1).Result()
	if err != nil {
		panic(err)
	}
	fmt.Println("Tasks:", tasks) // 输出: Tasks: [task1 task2]

	// 添加元素到集合
	client.SAdd("tags", "golang", "redis")
	// 检查元素是否存在
	var exists bool
	exists, err = client.SIsMember("tags", "golang").Result()
	if err != nil {
		panic(err)
	}
	//取出集合中的所有元素
	tags, err := client.SMembers("tags").Result()
	if err != nil {
		panic(err)
	}
	fmt.Println("Tags:", tags) // 输出: Tags: [golang redis]

	fmt.Println("Exists golang:", exists) // 输出: true
}
