Redisredis基本数据结构之Set

Posted wuyizuokan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redisredis基本数据结构之Set相关的知识,希望对你有一定的参考价值。

简介:

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()

  

运行效果:

技术图片

 

以上是关于Redisredis基本数据结构之Set的主要内容,如果未能解决你的问题,请参考以下文章

redisredis 基本数据结构之String

redisredis 基本数据结构之String

redisredis 基本数据结构之String

redisredis的基础入门(linux)

RedisRedis五种数据结构

RedisRedis 集合 Set 操作 ( Set 集合数据 | 查询操作 | 查询所有值 | 随机获取值 | 获取交集并集差集 | 增操作 | 删操作 | 修改操作 )