Redis-Set类型-增删改查
- 集合就是一堆无序的数据,Redis可以把一堆无序的数据当做Value存储起来
- 集合中不能出现
重复
的数据
新增
- 语法:sadd key value1, [value2, ...]
sadd names BNTang JonathanTang xhh
查询
- 返回集合中所有元素
- 语法:smembers key
- 由于Redis是单线程的,而以上操作都是非常耗时的,所以当元素比较多时需要慎用
smembers names
- 返回集合中N个元素,随机返回N个
- 语法:srandmember key [count]
srandmember names 1
删除
- 随机删除N个元素
- 语法:spop key
spop names
- 删除集合中的指定元素
- 语法:srem key value1, [value2, ...]
srem names xhh
Redis-Set类型-其它操作
追加元素
- sadd:key不存在就新增,存在就追加
- sadd:追加的元素不存在就追加,追加的元素存在会自动忽略(就不追加了)
sadd names BNTang JonathanLee
sadd names BNTang
sadd names xhh
经过上面的三条命令发现,只有最后一条才可以追加成功,因为xhh不存在就会追加进去存在的话啥也不干
统计集合中元素个数
- 语法:scard key
scard names
判断集合中是否有指定元素
- 语法:sismember key member
- 存在返回1,不存在返回0
sismember names tyh
sismember names BNTang
Redis中的集合是支持集合间的操作的,也就是求交集,并集和差集
交集
- 语法:sinter key [key, ...]
- {1, 2, 3} ∩ {2, 3, 4} = {2, 3}
并集
- 语法:sunion key [key, ...]
- {1, 2, 3} ∪ {2, 3, 4} = {1, 2, 3, 4}
差集
- 语法:sdiff key [key, ...]
- {1, 2, 3} - {2, 3, 4} = {1}
- {2, 3, 4} - {1, 2, 3} = {4}
Redis-Set类型-应用场景
抽奖
- srandmember key [count]
绑定标签
- sadd key value1, [value2, ...]
社交关系
例如微博
- sinter key [key, ...]
- sunion key [key, ...]
- sdiff key [key, ...]