go-redis使用之Set集合

go-redis Set集合操作

Redis 的 Set 是 无序不重复集合

Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

go-redis string使用笔记📒
go-redis List使用笔记📒
go-redis Hash使用笔记📒
go-redis ZSet使用笔记📒

go-redis源码地址:https://github.com/go-redis/redis

func GetRedisClient() *redis.Client {
	return redis.NewClient(&redis.Options{
		Addr:     "localhost:6379",
		Password: "",
		DB:       0,
	})
}

// redisSetTest Set集合(无序不重复)
func redisSetTest(cli *redis.Client) {
	// SAdd:添加(可一次添加多个)
	cli.SAdd("city", "西二旗", "东京", "纽约", "首尔", "新德里")

	// SRem:移除(可一次移除多个)
	cli.SRem("city", "东京", "首尔")

	//SMembers:查看set中的全部信息
	fmt.Println(cli.SMembers("city").Val()) // [新德里 纽约 西二旗]

	// 判断set中是否存在某个值
	fmt.Println(cli.SIsMember("city", "北京").Val()) //false

	//随机获取set集合中的一个元素
	fmt.Println(cli.SRandMember("city").Val()) //西二旗

	//随机获取指定个数的元素
	fmt.Println(cli.SRandMemberN("city", 2).Val()) //[新德里 西二旗]

	cli.SAdd("city", "莫斯科", "平襄", "雅加达", "马尼拉")
	fmt.Println(cli.SMembers("city").Val()) //[莫斯科 马尼拉 纽约 新德里 西二旗 平襄 雅加达]
	//随机删除一条数据
	cli.SPop("city")
	fmt.Println(cli.SMembers("city").Val()) //[莫斯科 纽约 马尼拉 平襄 雅加达 新德里]
	//随机删除指定条数数据
	cli.SPopN("city", 3)
	fmt.Println(cli.SMembers("city")) // [马尼拉 纽约 平襄]

	//将指定的值移动到指定集合(指定集合不存在则创建)
	b, err := cli.SMove("city", "language", "纽约").Result()
	if err != nil {
		panic(err)
	}
	fmt.Println(b)                              	//true
	fmt.Println(cli.SMembers("city").Val())     //[马尼拉 平襄]
	fmt.Println(cli.SMembers("language").Val()) //[纽约]

	//数字集合类
	cli.SAdd("set1","a","b","c","d")
	cli.SAdd("set2","a","c","e","f")

	//差集(注意以谁为基准,也就是第一个参数是谁!!!)
	fmt.Println(cli.SDiff("set1","set2").Val())	//[b d]
	fmt.Println(cli.SDiff("set2","set1").Val())	//[e f]
	//交集
	fmt.Println(cli.SInter("set1","set2").Val())//[a c]
	//并集
	fmt.Println(cli.SUnion("set1","set2").Val())//[c a b f d e]

}

func main() {
	rdb := GetRedisClient()
	defer rdb.Close()
	pong := rdb.Ping().Val()
	fmt.Printf("数据连接状态:%v\n", pong) // 数据连接状态:PONG

	redisSetTest(rdb)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值