入门
redis的set是一个无序的,不可重复的集合.大部分方法以s开头
常用方法解析
sadd
将指定的成员添加到存储在key的设置值中。 如果member已经是集合的成员,则不执行任何操作。 如果key不存在,则创建一个具有指定成员作为唯一成员的新集合。 如果键存在但没写值参数,则返回错误。
时间复杂度O(1)
public Long sadd(String key,
String... members)
//想当于新建了个set
> sadd myset "hello"
(integer) 1
//往set中添加元素
> sadd myset "world"
(integer) 1
//重复的元素不会被添加,底层原理是什么呢?
> sadd myset "world"
//如果添加了新元素,则为1;如果元素已经是集合的成员,则为0
(integer) 0
//查看集合元素
> smembers myset
1) "world"
2) "hello"
//同时添加多个元素
> sadd myset "hello" "city"
(integer) 1
> smembers myset
1) "world"
2) "hello"
3) "city"
//没有参数报错
> sadd myset
(error) ERR wrong number of arguments for 'sadd' command
scard
返回元素个数,如果key不存在,返回0
> scard myset
(integer) 3
spop
随机删除元素
> sadd uset "one"
(integer) 1
> sadd uset "two"
(integer) 1
> sadd uset "three"
(integer) 1
//随机删除元素,有何用途呢?
> spop uset
"two"
> spop uset
"one"
> smembers uset
1) "three"
srem
定向删除元素
> sadd set3 1 2 3
(integer) 3
> smembers set3
1) "1"
2) "2"
3) "3"
//删除元素2
> srem set3 2
(integer) 1
> smembers set3
1) "1"
2) "3"
//删除不存在的元素也不会报错
> srem set3 9
(integer) 0
sismember
判断是否集合元素,是就返回1 不是就返回0
> sadd set3 1 2 3
(integer) 1
> smembers set3
1) "1"
2) "2"
3) "3"
//2是集合3的元素,所以返回1
> sismember set3 2
(integer) 1
//10不是集合set3的元素,所以返回0
> sismember set3 10
(integer) 0
scala API
def setdemo(): Unit ={
//创建set
val long: lang.Long = jedis.sadd("heroes", "盖伦", "刀妹", "马杀鸡", "刘备")
//获取set成员并打印
val set: util.Set[String] = jedis.smembers("heroes")
import scala.collection.JavaConversions._
for(x<-set){
println(x)
}
//del one
println(jedis.srem("heroes", "刀妹"))
println("删除后-----------")
//必须重新获取成员然后再打印,否则看不出效果
for(x<-jedis.smembers("heroes")){
println(x)
}
}
总结
无非也是增删改查罢了,加上交集,并集,差集之类
增 sadd
删 spop,srem
改
查 smembers