当前位置: 首页 > 工具软件 > Go-Redis > 使用案例 >

go : go-redis set操作

齐凯康
2023-12-01

昨天是一张废弃了的支票,明天是一笔尚未到期的存款,只有今天是你可以支配的现金!!!
具体代码在: https://gitee.com/hjx_RuGuoYunZhiDao/strom-huang-go/blob/master/go_redis

1、初始化redis

参考上一篇:https://blog.csdn.net/bei_FengBoby/article/details/124756296

2、redis-set操作

2.1、 SAdd & SCard (增加 & 获取 )

    err := config.InitRedisClient()
	if err != nil {
		//redis连接错误
		panic(err)
	}
	fmt.Println("Redis连接成功")

	//----------------------SAdd & SCard

	// 添加100到集合中
	err = config.RedisDb.SAdd("redis-test", 100).Err()

	// 将100,200,300批量添加到集合中 集合的元素不能重复
	config.RedisDb.SAdd("redis-test", 100, 200, 300)
	
	//获取集合中元素的个数
	size, err := config.RedisDb.SCard("redis-test").Result()
	fmt.Print(size)

2.2、SIsMember & SMembers (判断包含 & 获取 )

    //SIsMember判断集合中是否包含某个值
	flag, err := config.RedisDb.SIsMember("redis-test", "222200").Result()
	fmt.Print(flag)

	//SMembers 返回集合中所有的值
	rts, err := config.RedisDb.SMembers("redis-test").Result()
	fmt.Print(rts)

2.3、并集 SInterStore & 交集 SInter & 差集

config.RedisDb.SAdd("big-key", "a", "b", "c")
	config.RedisDb.SAdd("smal-key", "a", "b", "d")
	//交集:既在big-key中,又在smal-key中
	names, err := config.RedisDb.SInter("big-key", "smal-key").Result()
	fmt.Print("交集结果是:", names)

	//求交集并将交集保存到 destSet 的集合
	des, err := config.RedisDb.SInterStore("destSet", "big-key", "smal-key").Result()
	fmt.Print("交集结果处理成功条数是:", des)
	destset, err := config.RedisDb.SMembers("destSet").Result()
	fmt.Print("destSet:", destset)

	//差集
	str, err := config.RedisDb.SDiff("big-key", "smal-key").Result()
	fmt.Print("差集:", str)

2.4、集合删除操作

    err = config.RedisDb.SAdd("redis-test", 1, 2, 3, 4, 5, 6, 7, 8, 9).Err()
	// 随机返回集合中的一个元素,并且删除这个元素
	member1, err := config.RedisDb.SPop("redis-test").Result()
	fmt.Println(member1)

	res2, _ := config.RedisDb.SMembers("redis-test").Result()
	fmt.Println(res2)

	// 随机返回集合中的4个元素,并且删除这些元素
	member2, err := config.RedisDb.SPopN("redis-test", 3).Result()
	fmt.Println(member2)
	res23, _ := config.RedisDb.SMembers("redis-test").Result()
	fmt.Println(res23)
	// 删除集合 名称为1,2,3的元素,并返回删除的元素个数
	member3, err := config.RedisDb.SRem("redis-test", 1, 2, 3).Result()
	fmt.Println(member3)
	res3, _ := config.RedisDb.SMembers("redis-test").Result()
	fmt.Println(res3)

2.5、 随机数

    //返回几个中随机任意一个
	str1, err := config.RedisDb.SRandMember("redis-test").Result()
	fmt.Println(str1)

	//返回几个中随机任意3个
	str2, err := config.RedisDb.SRandMemberN("redis-test", 3).Result()
	fmt.Println(str2)

2.6、 SMembersMap & SMove (转换Map & 移动)

	//把集合里的元素转换成map的key
	map1, err := config.RedisDb.SMembersMap("redis-test").Result()
	fmt.Println(map1)

	//新增一个key
	config.RedisDb.SAdd("redis-test2", "yyyy")

	//把redis-test 集合中4 移动到 redis-test2中
	ok, err := config.RedisDb.SMove("redis-test", "redis-test2", 4).Result()

	//如果没有4就是false
	fmt.Println(ok)

	str5, err := config.RedisDb.SMembers("redis-test2").Result()
	//[4 yyyy]
	fmt.Println(str5)

3、具体代码

package main

import (
	"fmt"
	config "strom-huang-go/go_redis/config"
)

func main() {
	err := config.InitRedisClient()
	if err != nil {
		//redis连接错误
		panic(err)
	}
	fmt.Println("Redis连接成功")

	//----------------------SAdd & SCard

	// 添加100到集合中
	err = config.RedisDb.SAdd("redis-test", 100).Err()

	// 将100,200,300批量添加到集合中 集合的元素不能重复
	config.RedisDb.SAdd("redis-test", 100, 200, 300)

	//获取集合中元素的个数
	size, err := config.RedisDb.SCard("redis-test").Result()
	fmt.Print(size)

	//-------------------SIsMember & SMembers示例
	//SIsMember判断集合中是否包含某个值
	flag, err := config.RedisDb.SIsMember("redis-test", "222200").Result()
	fmt.Print(flag)

	//SMembers 返回集合中所有的值
	rts, err := config.RedisDb.SMembers("redis-test").Result()
	fmt.Print(rts)

	//-----------------------并集 SInterStore &交集 SInter &差集
	config.RedisDb.SAdd("big-key", "a", "b", "c")
	config.RedisDb.SAdd("smal-key", "a", "b", "d")
	//交集:既在big-key中,又在smal-key中
	names, err := config.RedisDb.SInter("big-key", "smal-key").Result()
	fmt.Print("交集结果是:", names)

	//求交集并将交集保存到 destSet 的集合
	des, err := config.RedisDb.SInterStore("destSet", "big-key", "smal-key").Result()
	fmt.Print("交集结果处理成功条数是:", des)
	destset, err := config.RedisDb.SMembers("destSet").Result()
	fmt.Print("destSet:", destset)

	//差集
	str, err := config.RedisDb.SDiff("big-key", "smal-key").Result()
	fmt.Print("差集:", str)

	//----------------------- 集合删除操作
	err = config.RedisDb.SAdd("redis-test", 1, 2, 3, 4, 5, 6, 7, 8, 9).Err()
	// 随机返回集合中的一个元素,并且删除这个元素
	member1, err := config.RedisDb.SPop("redis-test").Result()
	fmt.Println(member1)

	res2, _ := config.RedisDb.SMembers("redis-test").Result()
	fmt.Println(res2)

	// 随机返回集合中的4个元素,并且删除这些元素
	member2, err := config.RedisDb.SPopN("redis-test", 3).Result()
	fmt.Println(member2)
	res23, _ := config.RedisDb.SMembers("redis-test").Result()
	fmt.Println(res23)
	// 删除集合 名称为300,400的元素,并返回删除的元素个数
	member3, err := config.RedisDb.SRem("redis-test", 1, 2, 3).Result()
	fmt.Println(member3)
	res3, _ := config.RedisDb.SMembers("redis-test").Result()
	fmt.Println(res3)

	//----------------随机数
	//返回几个中随机任意一个
	str1, err := config.RedisDb.SRandMember("redis-test").Result()
	fmt.Println(str1)

	//返回几个中随机任意3个
	str2, err := config.RedisDb.SRandMemberN("redis-test", 3).Result()
	fmt.Println(str2)

	//--------------------------SMembersMap & SMove示例
	//把集合里的元素转换成map的key
	map1, err := config.RedisDb.SMembersMap("redis-test").Result()
	fmt.Println(map1)

	//新增一个key
	config.RedisDb.SAdd("redis-test2", "yyyy")

	//把redis-test 集合中4 移动到 redis-test2中
	ok, err := config.RedisDb.SMove("redis-test", "redis-test2", 4).Result()

	//如果没有4就是false
	fmt.Println(ok)

	str5, err := config.RedisDb.SMembers("redis-test2").Result()
	//[4 yyyy]
	fmt.Println(str5)

}

 类似资料: