Redis-Set(无序集合)

Redis-Set(无序集合)

  • 前言
  • Set(无序集合)概括
  • 1、Sadd ,Smember ,Sismember
  • 2、Srem 移除set集合中的指定元素,Scard 长度
  • 3、Srandmember 随机抽选
  • 4、Llen 长度,Lrem移除list集合中指定个数的value
  • 5、spop 随机删除集合中的元素
  • 6、smove 将一个指定的值,移动到另外一个set集合
  • 7、SDIFF 差集 ,SINTER 交集 ,SUNION 并集
  • 8、Linsert 将某个具体的value插入到列表中某个元素的前面或者后面!

前言

提示:本文章是日常学习内容的总结,并非全部原创;仅供大家参考借鉴,并无其他商业用途。Bilibili搜索关注:狂神说
真正在公司中的实践:NoSQL + RDBMS 一起使用才是最强的,阿里巴巴的架构演进!
技术没有高低之分,就看你如何去使用!(提升内功,思维的提高!)
云计算的长征之路:阿里云的这群疯子

Set(无序集合)概括

可以做:共同关注,共同爱好,二度好友,推荐好友!(六度分割理论)
微博,A用户将所有关注的人放在一个set集合中!将它的粉丝也放在一个集合中!

1、Sadd ,Smember ,Sismember

127.0.0.1:6379> sadd myset "hello"          # set集合中添加元素 
(integer) 1 
127.0.0.1:6379> sadd myset "kuangshen" 
(integer) 1 
127.0.0.1:6379> sadd myset "lovekuangshen" 
(integer) 1 
127.0.0.1:6379> SMEMBERS myset              # 查看指定set的所有值 
1) "hello" 
2) "lovekuangshen" 
3) "kuangshen" 
127.0.0.1:6379> SISMEMBER myset hello       # 判断某一个值是不是在set集合中! 
(integer) 1 
127.0.0.1:6379> SISMEMBER myset world
(integer) 0
127.0.0.1:6379> scard myset                 # 获取set集合中的内容元素个数! 
(integer) 4

2、Srem 移除set集合中的指定元素,Scard 长度

127.0.0.1:6379> srem myset hello            # 移除set集合中的指定元素 
(integer) 1
127.0.0.1:6379> scard myset 
(integer) 3 
127.0.0.1:6379> SMEMBERS myset 
1) "lovekuangshen2" 
2) "lovekuangshen" 
3) "kuangshen"

3、Srandmember 随机抽选

set 无序不重复集合。抽随机! 
127.0.0.1:6379> SMEMBERS myset 
1) "lovekuangshen2" 
2) "lovekuangshen" 
3) "kuangshen" 
127.0.0.1:6379> SRANDMEMBER myset              # 随机抽选出一个元素 
"kuangshen" 
127.0.0.1:6379> SRANDMEMBER myset              # 随机抽选出一个元素 
"lovekuangshen2"
127.0.0.1:6379> SRANDMEMBER myset 2            # 随机抽选出指定个数的元素
1) "lovekuangshen" 
2) "lovekuangshen2" 
127.0.0.1:6379> SRANDMEMBER myset 2 
1) "kuangshen" 
2) "lovekuangshen2" 

4、Llen 长度,Lrem移除list集合中指定个数的value

127.0.0.1:6379> LRANGE list 0 -1 
1) "three" 
2) "three" 
3) "two" 
4) "one" 
127.0.0.1:6379> lrem list 1 one       # 移除list集合中第一个one的值,精确匹配 
(integer) 1 
127.0.0.1:6379> LRANGE list 0 -1 
1) "three" 
2) "three" 
3) "two" 
127.0.0.1:6379> lrem list 2 three     # 移除list集合中前两个three的值,精确匹配 
(integer) 2 
127.0.0.1:6379> LRANGE list 0 -1 
1) "two" 

5、spop 随机删除集合中的元素

127.0.0.1:6379> SMEMBERS myset 
1) "lovekuangshen2" 
2) "lovekuangshen" 
3) "kuangshen" 
127.0.0.1:6379> spop myset            # 随机删除一些set集合中的元素! 
"lovekuangshen2" 
127.0.0.1:6379> spop myset 
"lovekuangshen" 
127.0.0.1:6379> SMEMBERS myset 
1) "kuangshen"

6、smove 将一个指定的值,移动到另外一个set集合

127.0.0.1:6379> sadd myset "hello" 
(integer) 1 
127.0.0.1:6379> sadd myset "world" 
(integer) 1 
127.0.0.1:6379> sadd myset "kuangshen" 
(integer) 1 
127.0.0.1:6379> sadd myset2 "set2" 
(integer) 1 
127.0.0.1:6379> smove myset myset2 "kuangshen" # 将一个指定的值,移动到另外一个set集合!
(integer) 1 
127.0.0.1:6379> SMEMBERS myset 
1) "world" 
2) "hello" 
127.0.0.1:6379> SMEMBERS myset2 
1) "kuangshen" 
2) "set2"

7、SDIFF 差集 ,SINTER 交集 ,SUNION 并集

key1:a,b,c    key2: c,d,e
127.0.0.1:6379> SDIFF key1 key2                # 差集 
1) "b" 
2) "a" 
127.0.0.1:6379> SINTER key1 key2               # 交集   共同好友就可以这样实现 
1) "c" 
127.0.0.1:6379> SUNION key1 key2               # 并集 
1) "b" 
2) "c" 
3) "e" 
4) "a"
5) "d"

8、Linsert 将某个具体的value插入到列表中某个元素的前面或者后面!

127.0.0.1:6379> Rpush mylist "hello" 
(integer) 1 
127.0.0.1:6379> Rpush mylist "world" 
(integer) 2 
127.0.0.1:6379> LINSERT mylist before "world" "other"   # 在world前插入一个 other
(integer) 3 
127.0.0.1:6379> LRANGE mylist 0 -1 
1) "hello" 
2) "other" 
3) "world" 
127.0.0.1:6379> LINSERT mylist after world new          # 在world后插入一个 new
(integer) 4 
127.0.0.1:6379> LRANGE mylist 0 -1 
1) "hello" 
2) "other" 
3) "world" 
4) "new"

你可能感兴趣的:(redis,redis)