golang-redis之set类型简单操作
来源:互联网 发布:淘宝洗照片为什么便宜 编辑:程序博客网 时间:2024/05/29 08:35
1:安装redigo
go get github.com/garyburd/redigo/redis
2:连接redis
import ( "github.com/garyburd/redigo/redis")c, err := redis.Dial("tcp", "192.168.2.225:6379")if err != nil { fmt.Println("connect to redis err", err.Error()) return}defer c.Close()
3:命令执行
n,err := c.Do("sadd","key","value") //写result,err := redis.Values(c.Do("smembers","key"))//读
4:set类型常见操作
sadd(key, member):向名称为key的set中添加元素membersrem(key, member) :删除名称为key的set中的元素memberspop(key) :随机返回并删除名称为key的set中一个元素smove(srckey, dstkey, member) :移到集合元素scard(key) :返回名称为key的set的基数sismember(key, member) :member是否是名称为key的set的元素sinter(key1, key2,…key N) :求交集sinterstore(dstkey, (keys)) :求交集并将交集保存到dstkey的集合sunion(key1, (keys)) :求并集sunionstore(dstkey, (keys)) :求并集并将并集保存到dstkey的集合sdiff(key1, (keys)) :求差集sdiffstore(dstkey, (keys)) :求差集并将差集保存到dstkey的集合smembers(key) :返回名称为key的set的所有元素srandmember(key) :随机返回名称为key的set的一个元素
5:示例
5.1:sadd/smembers示例
_, err = c.Do("sadd", "myset", "mobike", "foo", "ofo", "bluegogo")if err != nil { fmt.Println("set add failed", err.Error())}value, err := redis.Values(c.Do("smembers", "myset"))if err != nil { fmt.Println("set get members failed", err.Error())} else { fmt.Printf("myset members :") for _, v := range value { fmt.Printf("%s ", v.([]byte)) } fmt.Printf("\n")}
5.2:srandmember示例
ret, err := c.Do("srandmember", "myset")if err != nil { fmt.Println("srandmember get failed")} else { fmt.Printf("srandmember get value is:%s\n", ret)}
5.3:srem示例
_, err = c.Do("srem", "myset", "bluegogo")if err != nil { fmt.Println("srem myset error", err.Error())} else { value, err = redis.Values(c.Do("smembers", "myset")) if err != nil { fmt.Println("set get members failed", err.Error()) } else { fmt.Printf("myset members :") for _, v := range value { fmt.Printf("%s ", v.([]byte)) } fmt.Printf("\n") }}
5.4:smove示例
_, err = c.Do("smove", "myset", "dbset", "mobike")if err != nil { fmt.Println("smove failed", err.Error())} else { value, err = redis.Values(c.Do("smembers", "dbset")) if err != nil { fmt.Println("get new dbset members failed", err.Error()) } else { fmt.Printf("get new dbset members :") for _, v := range value { fmt.Printf("%s ", v.([]byte)) } fmt.Printf("\n") }}
5.5:scard示例
num, err := c.Do("scard", "myset")if err != nil { fmt.Println("scard error", err.Error())} else { fmt.Println("scard get num :", num)}
5.6:sismember
isMember, err := c.Do("sismember", "myset", "foo")if err != nil { fmt.Println("sismember get failed", err.Error())} else { fmt.Println("foo is or not myset's member", isMember)}
5.7:sinter示例
_, err = c.Do("sadd", "dbset", "foo", "ofo", "xiaolan")if err != nil { fmt.Println("set add failed", err.Error())}inner, err := redis.Values(c.Do("sinter", "myset", "dbset"))if err != nil { fmt.Println("sinter error", err.Error())} else { fmt.Printf("two set inter is:") for _, v := range inner { fmt.Printf(" %s ", v.([]byte)) } fmt.Printf("\n")}
5.8:sinterstore
_, err = c.Do("sinterstore", "newset", "dbset", "myset")if err != nil { fmt.Println("sinterstore between myset and dbset error", err.Error())} else { value, err := redis.Values(c.Do("smembers", "newset")) if err != nil { fmt.Println("set get members failed", err.Error()) } else { fmt.Printf("newset members :") for _, v := range value { fmt.Printf("%s ", v.([]byte)) } fmt.Printf("\n") }}
5.9:sunion
unino, err := redis.Values(c.Do("sunion", "myset", "dbset"))if err != nil { fmt.Println("sunion err", err.Error())} else { fmt.Printf("two set union is:") for _, v := range unino { fmt.Printf(" %s ", v.([]byte)) } fmt.Printf("\n")}
5.10:sunionstore
_, err = c.Do("sunionstore", "unewset", "myset", "dbset")if err != nil { fmt.Println("sunionstore failed", err.Error())} else { value, err := redis.Values(c.Do("smembers", "unewset")) if err != nil { fmt.Println("set get members failed", err.Error()) } else { fmt.Printf("unewset members :") for _, v := range value { fmt.Printf("%s ", v.([]byte)) } fmt.Printf("\n") }}
5.11:sdiff
diff, err := redis.Values(c.Do("sdiff", "dbset", "myset"))if err != nil { fmt.Println("sdiff err", err.Error())} else { fmt.Printf("two set diff is:") for _, v := range diff { fmt.Printf(" %s ", v.([]byte)) } fmt.Printf("\n")}
5.12:sdiffstore
_, err = c.Do("sdiffstore", "dnewset", "dbset", "myset")if err != nil { fmt.Println("sdiffstore failed", err.Error())} else { value, err := redis.Values(c.Do("smembers", "dnewset")) if err != nil { fmt.Println("set get members failed", err.Error()) } else { fmt.Printf("dnewset members :") for _, v := range value { fmt.Printf("%s ", v.([]byte)) } fmt.Printf("\n") }}
5.13:spop
res, err := c.Do("spop", "myset")if err != nil { fmt.Println("spop failed", err.Error())} else { fmt.Printf("spop element is:%s\n", res)}value, err = redis.Values(c.Do("smembers", "myset"))if err != nil { fmt.Println("after spop get members failed", err.Error())} else { fmt.Printf("after spop myset members :") for _, v := range value { fmt.Printf("%s ", v.([]byte)) } fmt.Printf("\n")}
6:运行结果
完整代码路径
阅读全文
0 0
- golang-redis之set类型简单操作
- golang-redis之sorted set类型简单操作
- golang-redis之string类型简单操作
- golang-redis之list类型简单操作
- golang-redis之hash类型简单操作
- Redis之set类型操作
- redis-set类型操作
- redis 之set类型
- Redis数据类型之SET类型
- Redis之Set 集合类型
- [golang]map/set类型
- Redis-Set类型常用操作命令
- redis-hash类型简单操作
- redis-list类型简单操作
- redis-zset类型简单操作
- Redis学习之路001-String类型操作命令之set get 命令
- redis之集合类型(set)
- NoSQL之Redis---Set类型命令
- 蓝桥杯:基础训练——矩阵乘法
- java:产生随机10个1000以内随机整数(从大到小)
- There is no getter for property named ‘XXX’ in 'class java.lang.String'
- 写给非技术人员评估技术同事的参考
- 三角形面积
- golang-redis之set类型简单操作
- 蓝桥杯:基础训练——矩形面积交
- Codeforces Round #200 (Div. 1)
- 成绩转换(分支结构)
- “自顶向下 逐步求精”的设计方法
- 嵌入式的开发环境的建立
- 让我们来扮演高斯(循环结构)
- HTML:使用表单
- Jarvis oj 文件数据修复 writeup