go-redis常用操作

go-redis官网🔗https://github.com/redis/go-redis

连接

import (
	"fmt"

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

var rdb *redis.Client

func initRedis() (err error) {
	// Initialize the Redis client
	rdb = redis.NewClient(&redis.Options{
		Addr:     "localhost:6379", // 连接到本地的 Redis 服务器
		Password: "",               // redis密码
		DB:       0,                // 默认数据库
		PoolSize: 100,              // 设置连接池大小
	})

	_, err = rdb.Ping().Result() // 测试连接
	return err
}

func main() {
	if err := initRedis(); err != nil {
		panic(err)
	}

	fmt.Println("Redis client initialized successfully")
	defer rdb.Close()

}

常用操作

Set & Get

func setTest() {
	//func (c *redis.cmdable) Set(key string, value interface{}, expiration time.Duration) *redis.StatusCmd
	// key: 键名 value: 键值 expiration: 过期时间 0表示不过期
	err := rdb.Set("name", "tom", 0).Err() // 设置键值对,返回错误
	rdb.Set("age", 18, 0)                  // 设置键值对,不返回错误
	if err != nil {
		fmt.Println("Error:", err)
		return
	} else {
		fmt.Println("key set successfully")
	}
}

func getTest() {
	val, err := rdb.Get("name").Result() // 获取键值对,返回错误
	val_age := rdb.Get("age").Val()      // 获取键值对,不返回错误,若键不存在则返回空字符串
	if err == redis.Nil {
		fmt.Println("key does not exist")
	} else if err != nil {
		fmt.Println("Error:", err)
	} else {
		fmt.Println("key:", val)
	}
	fmt.Println("age:", val_age)

}

HSet & HGet

func hashSetTest() {
	//func (c *redis.cmdable) HSet(key string, values ...interface{}) *redis.IntCmd
	// key: 键名 field: 字段名 value: 字段值
	err := rdb.HSet("user", "name", "tom").Err() // 设置哈希表的键值对,返回错误
	rdb.HSet("user", "age", 18)                  // 设置哈希表的键值对,不返回错误
	if err != nil {
		fmt.Println("Error:", err)
		return
	} else {
		fmt.Println("key set successfully")
	}
}

func hashGetTest() {
	//func (c *redis.cmdable) HGet(key, field string) *redis.StringCmd
	// key: 键名 field: 字段名
	val, err := rdb.HGet("user", "name").Result() // 获取哈希表的键值对,返回错误
	val_age := rdb.HGet("user", "age").Val()      // 获取哈希表的键值对,不返回错误,若键不存在则返回空字符串
	if err == redis.Nil {
		fmt.Println("key does not exist")
	} else if err != nil {
		fmt.Println("Error:", err)
	} else {
		fmt.Println("key:", val)
	}
	fmt.Println("age:", val_age)
}

ZsetTest & ZgetTest

func ZsetTest() {
	//func (c *redis.cmdable) ZAdd(key string, members ...Z) *redis.IntCmd
	// key: 键名 member: 成员 score: 分数
	err := rdb.ZAdd("zset", redis.Z{Score: 1, Member: "tom"}).Err() // 设置有序集合的键值对,返回错误
	rdb.ZAdd("zset", redis.Z{Score: 2, Member: "jerry"})            // 设置有序集合的键值对,不返回错误
	if err != nil {
		fmt.Println("Error:", err)
		return
	} else {
		fmt.Println("key set successfully")
	}
}
func ZgetTest() {
	//func (c *redis.cmdable) ZRange(key string, start, stop int64) *redis.StringSliceCmd
	// key: 键名 start: 起始索引 stop: 结束索引,0表示第一个元素,-1表示最后一个元素
	val, err := rdb.ZRange("zset", 0, -1).Result() // 获取有序集合的键值对,返回错误
	if err == redis.Nil {
		fmt.Println("key does not exist")
	} else if err != nil {
		fmt.Println("Error:", err)
	} else {
		fmt.Println("key:", val)
	}
}

SsetTest & SgetTest

func SsetTest() {
	//func (c *redis.cmdable) SAdd(key string, members ...interface{}) *redis.IntCmd
	// key: 键名 member: 成员
	err := rdb.SAdd("set", "tom").Err() // 设置集合的键值对,返回错误
	rdb.SAdd("set", "jerry")            // 设置集合的键值对,不返回错误
	if err != nil {
		fmt.Println("Error:", err)
		return
	} else {
		fmt.Println("key set successfully")
	}
}
func SgetTest() {
	//func (c *redis.cmdable) SMembers(key string) *redis.StringSliceCmd
	// key: 键名
	val, err := rdb.SMembers("set").Result() // 获取集合的键值对,返回错误
	if err == redis.Nil {
		fmt.Println("key does not exist")
	} else if err != nil {
		fmt.Println("Error:", err)
	} else {
		fmt.Println("key:", val)
	}
}

Incr

func incrTest() {
	//func (c *redis.cmdable) Incr(key string) *redis.IntCmd
	// key: 键名
	val, err := rdb.Incr("counter").Result() // 自增1,返回错误
	if err == redis.Nil {
		fmt.Println("key does not exist")
	} else if err != nil {
		fmt.Println("Error:", err)
	} else {
		fmt.Println("key:", val)
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值