- 集合类型
Set 是一个无序并唯一的键值集合。
- 它的存储顺序不会按照插入的先后顺序进行存储。
同列表的区别
- 列表可以存储重复元素,集合只能存储非重复元素;
- 列表是按照元素的先后顺序存储元素的,而集合则是无序方式存储元素的;
redis-cli使用
127.0.0.1:6379> sadd like Anna Bob Bob Cat
(integer) 3
127.0.0.1:6379> smembers like
1) "Anna"
2) "Bob"
3) "Cat"
127.0.0.1:6379> scard like
(integer) 3
127.0.0.1:6379> sismember like Anna
(integer) 1
127.0.0.1:6379> sismember like John
(integer) 0
127.0.0.1:6379> smembers like
1) "Anna"
2) "Bob"
3) "Cat"
127.0.0.1:6379> smembers dislike
1) "Lee"
2) "Mary"
3) "Sasike"
127.0.0.1:6379> smove like dislike Cat
(integer) 1
127.0.0.1:6379> smembers like
1) "Anna"
2) "Bob"
127.0.0.1:6379> smembers dislike
1) "Lee"
2) "Mary"
3) "Cat"
4) "Sasike"
- 移除集合中一个或者多个元素, 不存在的元素将会被忽略
127.0.0.1:6379> smembers dislike
1) "Lee"
2) "Mary"
3) "Cat"
4) "Sasike"
127.0.0.1:6379> srem dislike Lee Cat
(integer) 2
127.0.0.1:6379> smembers dislike
1) "Mary"
2) "Sasike"
使用Jedis操作Set
public class RedisSet {
public static void main(String[] args) {
Jedis redis = ConnectRedis.getRedis();
Set<String> dislike = redis.smembers("dislike");
System.out.println(dislike);
redis.sadd("dislike","Hinata","Sakura","Gala");
dislike=redis.smembers("dislike");
System.out.println(dislike);
}
}
集合实现
- 当所有元素都为整数时,集合会以
intset 结构进行(数据)存储;
- 当元素为非整数时,集合会使用
hashtable 进行存储;
使用场景
- 微博关注我的人和我关注的人都适合用集合存储,可以保证人员不会重复;
- 中奖人信息也适合用集合类型存储,这样可以保证一个人不会重复中奖;
更多操作命令
127.0.0.1:6379> smembers dislike
1) "Sakura"
2) "Mary"
3) "Hinata"
4) "Sasike"
5) "Gala"
127.0.0.1:6379> spop dislike 1
1) "Sakura"
127.0.0.1:6379> spop dislike 1
1) "Hinata"
127.0.0.1:6379> smembers dislike
1) "Gala"
2) "Mary"
3) "Sasike"
127.0.0.1:6379> smembers dislike
1) "Gala"
2) "Mary"
3) "Sasike"
127.0.0.1:6379> srandmember dislike 2
1) "Mary"
2) "Gala"
127.0.0.1:6379> sadd set1 a b c d e
(integer) 5
127.0.0.1:6379> sadd set2 a b f g h
(integer) 5
127.0.0.1:6379> sinter set1 set2
1) "a"
2) "b"
127.0.0.1:6379> sadd set1 a b c d e
(integer) 5
127.0.0.1:6379> sadd set2 a b f g h
(integer) 5
127.0.0.1:6379> sinterstore set3 set1 set2
(integer) 2
127.0.0.1:6379> smembers set3
1) "a"
2) "b"
127.0.0.1:6379> sunion set1 set2
1) "b"
2) "h"
3) "g"
4) "f"
5) "d"
6) "a"
7) "e"
8) "c"
127.0.0.1:6379> sunionstore set4 set1 set2
(integer) 8
127.0.0.1:6379> smembers set4
1) "b"
2) "h"
3) "g"
4) "f"
5) "d"
6) "a"
7) "e"
8) "c"
127.0.0.1:6379> smembers set1
1) "d"
2) "a"
3) "c"
4) "b"
5) "e"
127.0.0.1:6379> smembers set2
1) "b"
2) "h"
3) "f"
4) "g"
5) "a"
127.0.0.1:6379> sdiff set1 set2
1) "d"
2) "e"
3) "c"
127.0.0.1:6379> sdiffstore set5 set1 set2
(integer) 3
127.0.0.1:6379> smembers set5
1) "d"
2) "e"
3) "c"
网友评论