Set操作 sadd(key, member): 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。 假如 key 不存在,则创建一个只包含 member 元素作成员的集合。 当 key 不是集合类型时,返回一个错误。 ~~~ func SetTest(redisdb *redis.Client) { ret,err:=redisdb.SAdd("k1","a","b","c","d").Result() if err!=nil { fmt.Println(err) return } fmt.Println(ret) } ------------------------------------------------------------- 4 //返回插入成功的数目 ~~~ srem(key, member) : 移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。 当 key 不是集合类型,返回一个错误。 ~~~ func SetTest(redisdb *redis.Client) { ret,err:=redisdb.SRem("k1","c","d").Result() if err!=nil { fmt.Println(err) return } fmt.Println(ret) } ~~~ spop(key) :随机返回并删除名称为key的set中一个元素。 ~~~ func SetTest(redisdb *redis.Client) { ret,err:=redisdb.SPop("k1").Result() if err!=nil { fmt.Println(err) return } fmt.Println(ret) } ~~~ smove(srckey, dstkey, member) : 将 member 元素从 source 集合移动到 destination 集合。 SMOVE 是原子性操作。 如果 source 集合不存在或不包含指定的 member 元素,则 SMOVE 命令不执行任何操作,仅返回 0 。否则, member 元素从 source 集合中被移除,并添加到 destination 集合中去。 当 destination 集合已经包含 member 元素时, SMOVE 命令只是简单地将 source 集合中的 member 元素删除。 当 source 或 destination 不是集合类型时,返回一个错误。 ~~~ func SetTest(redisdb *redis.Client) { ret,err:=redisdb.SMove("k1","k2","1").Result() if err!=nil { fmt.Println(err) return } fmt.Println(ret) } ------------------------------------------------------ k1原来是1,2,3 k2原来是4,5,6 执行后: k1是2,3 k2是1,4,5,6 ~~~ scard(key) :返回集合 key 的基数(集合中元素的数量)。 ~~~ func SetTest(redisdb *redis.Client) { ret,err:=redisdb.SCard("k1").Result() if err!=nil { fmt.Println(err) return } fmt.Println(ret) } ~~~ sismember(key, member) :member是否是名称为key的set的元素。 ~~~ func SetTest(redisdb *redis.Client) { ret,err:=redisdb.SIsMember("k1",2).Result() if err!=nil { fmt.Println(err) return } fmt.Println(ret) } ----------------------------------------------------- true 判断2是不是k1的元素,返回true ~~~ sinter(key1, key2,…key N) :求交集。 ~~~ func SetTest(redisdb *redis.Client) { ret,err:=redisdb.SInter("k1","k2").Result() if err!=nil { fmt.Println(err) return } fmt.Println(ret) } ---------------------------------------------------- k1是1,2,3,6 k2是1,4,5,6 执行结果为: 1,6 ~~~ sunion(key1, (keys)) :求并集。 ~~~ func SetTest(redisdb *redis.Client) { ret,err:=redisdb.SUnion("k1","k2").Result() if err!=nil { fmt.Println(err) return } fmt.Println(ret) } ---------------------------------------------------- k1是1,2,3,6 k2是1,4,5,6 执行结果为: 1,2,3,4,5,6 ~~~ sdiff(key1, (keys)) :求差集。 ~~~ func SetTest(redisdb *redis.Client) { ret,err:=redisdb.SDiff("k1","k2").Result() if err!=nil { fmt.Println(err) return } fmt.Println(ret) } ---------------------------------------------------- k1是1,2,3,6 k2是1,4,5,6 执行结果为: 2,3 ~~~ smembers(key) :返回名称为key的set的所有元素。 ~~~ func SetTest(redisdb *redis.Client) { ret,err:=redisdb.SMembers("k1").Result() if err!=nil { fmt.Println(err) return } fmt.Println(ret) } ~~~ srandmember(key) :随机返回名称为key的set的一个元素。 ~~~ func SetTest(redisdb *redis.Client) { ret,err:=redisdb.SRandMember("k1").Result() if err!=nil { fmt.Println(err) return } fmt.Println(ret) } ~~~