redis学习-集合set常用命令
1.sadd:添加一个元素到集合中(集合中的元素无序的并且唯一)
2.smembers:查看集合中所有的元素(上图事例)
3.srem:删除结合中指定的元素
4.scard:返回集合元素的数量
5.SRandMember
如果不填写返回个数,默认是1,如果填写的数字大于集合的size,那么返回集合的所有元素
如果填写的是负数,如果绝对值大于集合的size,那么返回值里会出现一个元素多次出现的情况。
如果key不存在,则返回nil
smove:将一个集合的元素转移到另一个集合中
spop:从集合中随机移出一个元素
sismember:判断元素是否在集合中,如果存在 返回1,否则返回0
sscan:使用游标获取集合中的值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
@Test
public
void
scantest(){
Jedis jedis=
new
Jedis(
"127.0.0.1"
,6379);
// jedis.select(2);
// for (int i = 0; i < 100; i++) {
// jedis.sadd("scantest","scanceshi"+i);
// }
//// System.out.println(m2);
int
x=1;
int
y=0;
int
sum=0;
ScanParams scanParams=
new
ScanParams();
scanParams.match(
"scanceshi51"
);
Set<String> strings=
new
TreeSet<String>();
for
(;;){
ScanResult<String> scantest = jedis.sscan(
"scantest"
, y, scanParams);
System.
out
.println(scantest.getStringCursor().toString()+
"----------取出:"
+scantest.getResult().size()+
"----当前总数:"
+(scantest.getResult().size()+sum));
sum+=scantest.getResult().size();
for
(String o : scantest.getResult()) {
strings.add(o);
}
if
(scantest.getStringCursor().toString().
equals
(
"0"
))
break
;
y= Integer.parseInt(scantest.getStringCursor().toString());
}
System.
out
.println(strings.size());
jedis.quit();
}
|
从0开始,一直循环,会返回两个集合,第几个是游标的位置,如果为0那么说明执行结束,如果不为0,那么下次以第一个集合返回的值作为下次开始的位置如下
集合 并/交/差运算
SUNION:集合并运算
SUNIONSTORE:求并集后存到一个新的集合(如果结果集存入到已有的集合,那么会覆盖以后的数据集合)
sinter/sinterstore同上
sdiff/sdiffstore同上
1.sadd:添加一个元素到集合中(集合中的元素无序的并且唯一)
2.smembers:查看集合中所有的元素(上图事例)
3.srem:删除结合中指定的元素
4.scard:返回集合元素的数量
5.SRandMember
如果不填写返回个数,默认是1,如果填写的数字大于集合的size,那么返回集合的所有元素
如果填写的是负数,如果绝对值大于集合的size,那么返回值里会出现一个元素多次出现的情况。
如果key不存在,则返回nil
smove:将一个集合的元素转移到另一个集合中
spop:从集合中随机移出一个元素
sismember:判断元素是否在集合中,如果存在 返回1,否则返回0
sscan:使用游标获取集合中的值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
@Test
public
void
scantest(){
Jedis jedis=
new
Jedis(
"127.0.0.1"
,6379);
// jedis.select(2);
// for (int i = 0; i < 100; i++) {
// jedis.sadd("scantest","scanceshi"+i);
// }
//// System.out.println(m2);
int
x=1;
int
y=0;
int
sum=0;
ScanParams scanParams=
new
ScanParams();
scanParams.match(
"scanceshi51"
);
Set<String> strings=
new
TreeSet<String>();
for
(;;){
ScanResult<String> scantest = jedis.sscan(
"scantest"
, y, scanParams);
System.
out
.println(scantest.getStringCursor().toString()+
"----------取出:"
+scantest.getResult().size()+
"----当前总数:"
+(scantest.getResult().size()+sum));
sum+=scantest.getResult().size();
for
(String o : scantest.getResult()) {
strings.add(o);
}
if
(scantest.getStringCursor().toString().
equals
(
"0"
))
break
;
y= Integer.parseInt(scantest.getStringCursor().toString());
}
System.
out
.println(strings.size());
jedis.quit();
}
|
从0开始,一直循环,会返回两个集合,第几个是游标的位置,如果为0那么说明执行结束,如果不为0,那么下次以第一个集合返回的值作为下次开始的位置如下
集合 并/交/差运算
SUNION:集合并运算
SUNIONSTORE:求并集后存到一个新的集合(如果结果集存入到已有的集合,那么会覆盖以后的数据集合)
sinter/sinterstore同上
sdiff/sdiffstore同上