我的個人博客:https://www.wuyizuokan.com
簡介:
Set類似於Java中的HashSet,實際上是一個比較特殊的Map,所有的value都為null。Set結構和Java中一樣,有自動去重的功能,在一些需要去重的場景下可以使用。
操作:
添加元素:sadd setName value

移除元素:srem setName value

查看set中所有元素 smember setName:

隨機返回刪除的元素:spop setName [count] // count為彈出的元素的個數

加上個數:

取后續集合中沒有,但第一個集合中存在的元素:sdiff set1Name set2Name .....:

取后續集合中沒有,但第一個集合中存在的元素,並放入到指定的集合中:sdiffstore dstSet set1Name set2Name set3Name ....:

取交集,sinter set1Name set2Name ...

取交集,結果放入一個指定的集合中:sinterstore dstSet set1Name set2Name ...

取並集,sunion payList promotionList

取並集,結果放入一個指定的集合中:sunionstore dstSet set1Name set2Name ...

將一個集合中的元素移動到另外一個集合中:smove srcSet dstSet value:

獲取集合的大小,scard setName:

判斷元素是否是該集合中的,sismember setName value:

下面編寫一段Go代碼來操作Set結構:
package main
import (
"github.com/garyburd/redigo/redis"
"fmt"
)
func main(){
// 連接redis
conn,err := redis.Dial("tcp", "localhost:6379")
if err != nil {
fmt.Errorf("connection redis failed. error info: ", err)
return
}
_,err = conn.Do("sadd", "payList", "zhangfei", "machao", "liubei", "guanyu")
if err != nil {
fmt.Errorf("sadd operation is failed. error info: ", err)
return
}
_, err = conn.Do("srem", "payList", "zhangfei")
if err != nil {
fmt.Errorf("srem operation is failed. error info: ", err)
return
}
name, err1:= redis.String(conn.Do("spop", "payList"))
if err1 != nil {
fmt.Errorf("spop operation is failed. error info: ", err1)
return
}
fmt.Println("the spop get value: ", name)
defer conn.Close()
}
運行效果:

