数据形式
k e y − − > { v a l u e 1 , v a l u e 2 , . . . } key-->\{value1,value2,...\} key−−>{value1,value2,...}
- 集合是无序的,去重的容器数据结构
- 值只能为字符串,最多 2 32 − 1 2^{32}-1 232−1
常用命令
- 添加元素
sadd s1 tom jack lili
sadd s1 tom tom
#添加成功返回1
#失败返回0
python添加元素
r.sadd("s1","tom","jack","lili",5) #必须是一个一个的值
- 获取集合所有元素
smembers s1
"tom"
"jack"
"lili"
python获取redis集合中所有元素,返回一个集合
r.smembers("s1")
返回{b"tom",b"jack",b"lili",b"5"}
- 删除集合中的tom
srem s1 tom
python删除集合中tom
r.srem("s1","tom")
- 统计成员总数
scard s1
python统计成员总数,返回 int
r.scard("s1")
- 判断jack是否在集合中
sismember s1 jack
python判断jack是否在集合中
r.sismember("s1","jack")
返回True/False
- 随机抽取元素
#随机抽取一个元素,总元素数不变
srandmember s1 1
#随机抽取两个元素
srandmember s1 2
python随机抽取元素
r.srandmember("s1",1)
r.srandmember("s1",2)
均返回列表
- 随机弹出元素
#随机弹出一个元素
spop s1 1
#随机弹出两个元素
spop s1 2
python随机弹出元素
r.spop("s1",1)
r.spop("s1",2)
返回列表
- 从集合s1中移出一个元素放入s2
#随机弹出一个元素
smove s1 s2 jack
python从集合s1中移出一个元素放入s2
r.smove("s1","s2","jack")
返回True/False
- 差集
#s1-s2
sdiff s1 s2
sdiffstore destination s1 s2
python
r.sdiff("s1","s2")
返回集合
10.交集、并集
#交集
sinter s1 s2
sinterstore destination s1 s2
#并集
sunion s1 s2
sunionstore destination s1 s2
python
r.sinter("s1","s2")
返回集合
r.sinterstore("destination","s1","s2")
集合应用场景
- 社交平台共同好友,取交集
- 随机抽奖
- 元素去重
- 黑白名单
需要注意的是,当插入集合元素时,若全部为int(集合内转为字符串),此时集合采用列表结构,否则采用哈希结构
查看结构:object encoding key