redis基本数据结构-集合set

redis基本数据结构-集合set

 

  • 特性
  • 一个集合键最多存储 2^32 - 1 个字符串值
  • 元素在集合内无序(哈希表-链地址法解决冲突)
  • 元素在集合内唯一

 


  

  • 向集合添加元素
sadd key  value1 value2 ...
sadd letters a b c d

返回4(实际添加的元素个数), letters = {a, b, c, d},无序,只为指示集合中的值

 

  • 从集合删除元素(只删除且只返回实际删除了的个数,而不返回删除的元素值)
srem key value1  value2 ...
srem a c 

 返回2(实际删除的元素个数), letters = {b, d}

 

  • 获取集合中的所有元素
smembers key
smembers  letters

 letters = {b, d}

 

  • 判断元素是否在集合中
sismember key value
sismember  letters b

 返回1

sismember letters a

 返回0

 

 

  • 相减运算
sdiff  key1  key2 ...

 说明:  sdiff key1 key2 === {x | x∈key1  and x∉key2}

sadd letters a c 
sadd letters2 a b c
sdiff letters letters2

letters = {a, b, c, d}

letters = {a, b , c}

返回{d}

 

  • 相交运算
sinter  key1  key2 ...
sinter letters  letters2

 返回 {a, b, c} 

 

  • 并集运算
sunion  key1  key2 ...
sunion  letters  letters2 

返回 {a, b, c, d}

 

 

  • 获取集合中的元素总数
scard   key
scard  letters

 返回 4,  letters = {a, b, c, d}

 

 

随机获取集合中的(指定个数)元素

srandmember  key [count]

当 不指定count,返回1个

当 count > 0,返回count不重复的,如果count > scard key ,则返回全部

当 count < 0,返回abs(count)个可能会重复的,如果abs(count) > scard key,则返回可能重复的abs(count)个

letters = {a, b, c, d}

srandmember  letters

 返回 b,随机的,不一定是b

srandmember lettters   -3

 返回{a, b, a},随机的,不一定是这3个

 

 

  • 进行集合运算并将计算结果存储在一个key中

key1 key2 ... 等键做diff运算后存储在key中

sdiffstory  key   key1  key2 ...

 

 

  • key1 key2 ... 等键做交集运算后存储在key中 
sinter key  key1  key2 ...

 

 

  •  key1 key2 ... 等键做并集运算后存储在key中
sunion  key  key1  key2 ...

  

 

  • 从集合中弹出某个元素(随机删除并返回元素值,区别于srem)
spop  key
spop  letters

 返回 a,随机的,不一定是a

 

posted on 2021-04-26 22:47  崔好好  阅读(100)  评论(0编辑  收藏  举报

导航