redis--06--操作--Set

redis–06–操作–Set


1、简介

  1. Redis的Set是string类型的无序集合。它底层其实是一个value为null的hash表,所以添加,删除,查找的复杂度都是O(1)。
  2. 集合元素不能重复
  3. 可以统计访问网站的所有独立ip。

2、数据结构

Set数据结构是dict字典,字典是用哈希表实现的。

Java中HashSet的内部实现使用的是HashMap,只不过所有的value都指向同一个对象。

Redis的set结构也是一样,它的内部也使用hash结构,所有的value都指向同一个内部值。

3、操作

3.1 sadd key value1 value2

往集合key中增加元素

127.0.0.1:6379> sadd num 1 2 3 4
(integer) 4
127.0.0.1:6379> smembers num
1) "1"
2) "2"
3) "3"
4) "4"

3.2 srem key value1 value2

  1. 删除集合key中值为 value1 value2的元素
  2. 返回值: 返回真正删除掉的元素的个数
127.0.0.1:6379> srem num 1 5
(integer) 1
127.0.0.1:6379> smembers num
1) "2"
2) "3"
3) "4"

3.3 spop key

随机删除集合key中1个元素,并返回该元素


127.0.0.1:6379> sadd num 1 2 3 4
(integer) 1
127.0.0.1:6379> spop num
"4"
127.0.0.1:6379> spop num
"1"
127.0.0.1:6379> spop num
"3"
127.0.0.1:6379> spop num
"2"
# 已经删光了元素
127.0.0.1:6379> spop num
(nil)
127.0.0.1:6379> 

3.4 srandmember key[count]

  1. 集合key中,随机返回1个元素.
  2. count>0:
    1. 随机返回count个不重复的元素,如果count>集合的元素个数,返回所有元素
  3. count<0:
    1. 随机返回count个元素(可重复)
127.0.0.1:6379> srandmember num
"2"

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.5 sismember key value

  1. 判断value是否在key集合中,
    1. 是:返回1
    2. 否:返回0
127.0.0.1:6379> sismember num 1
(integer) 1

3.6 smembers key

返回集中中所有的元素

127.0.0.1:6379> sadd num 1 2 3 4
(integer) 4
127.0.0.1:6379> smembers num
1) "1"
2) "2"
3) "3"
4) "4"

3.7 scard key

返回集合中元素的个数

127.0.0.1:6379> sadd num 1 2 3 4
(integer) 4
127.0.0.1:6379> scard num
(integer) 4

3.8 smove source dest value

把source中的value删除,并添加到dest集合中

127.0.0.1:6379> sadd num 1 2 3 4
(integer) 4
127.0.0.1:6379> sadd str a b c d
(integer) 4
127.0.0.1:6379> smove num str 1
(integer) 1
127.0.0.1:6379> smembers num
1) "2"
2) "3"
3) "4"
127.0.0.1:6379> smembers str
1) "b"
2) "a"
3) "d"
4) "c"
5) "1"

3.9 sinter key1 key2 key3

求出key1 key2 key3 三个集合中的交集,并返回

127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> sadd str1  a b c d
(integer) 4
127.0.0.1:6379> sadd str2  a b c d e f g
(integer) 7
127.0.0.1:6379> sinter str1 str2
1) "b"
2) "a"
3) "d"
4) "c"

3.10 sinterstore dest key1 key2 key3

求出key1 key2 key3 三个集合中的交集,并赋给dest

127.0.0.1:6379> sadd str1  	a b c d
(integer) 4
127.0.0.1:6379> sadd str2 	a b c d e f g
(integer) 7
127.0.0.1:6379> sinterstore dest str1 str2
(integer) 4
127.0.0.1:6379> smembers dest
1) "a"
2) "b"
3) "c"
4) "d"

3.11 sunion key1 key2… Keyn

求出key1 key2 keyn的并集,并返回

127.0.0.1:6379> sadd str1 a b c d
(integer) 4
127.0.0.1:6379> sadd str2 a b c d e f g
(integer) 7
127.0.0.1:6379> sunion str1 str2
1) "e"
2) "d"
3) "c"
4) "f"
5) "b"
6) "a"
7) "g"

3.12 sdiff key1 key2 key3

求出key1与key2 key3的差集
即key1-key2-key3

127.0.0.1:6379> sadd str1 a b c d
(integer) 4
127.0.0.1:6379> sadd str2 a b c d e f g
(integer) 7
127.0.0.1:6379> sdiff str2 str1
1) "f"
2) "e"
3) "g"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值