Redis 集合(Set)

< 1>说明

Redis set 对外提供的功能与list雷士,是一个列表的功能,特殊之处在于set是一个可以自动排重的,当你需要纯出一个列数据,又不希望出现重复数据时,set是一个很好的选择。并且set提供了判断某个成员是否在一个set集合内部的重要接口,这个也是list所不能提供的。

Redis 的set 是string类型的无需集合,他底层其实是一个value为nulll的hash表,所以添加,删除,查找的复杂度都是O(1).

一个算法, 随着数据的增加,执行时间的长短,如果是O(1),数据增加,查找数据的时间不变。

< 2>数据结构

Set数据结构是dict字典,字典使用hash表实现的。
Java 中的HashSet的内部实现用的是HashMap,只不过所有的value都指向同一个对象,Redis的set结构也是一样,他的内部也是用hash结构,所有的value都指向同一个内部值。

< 3>常见命令

  1. 将一个或二者多个member元素加入到集合key中,已经存在的member元素将被忽略
    sadd < key> < value1> < value2>…
  2. redis set对象 redis set类型_哈希算法

  3. 取出集合的所有值
    smembers < key>
  4. redis set对象 redis set类型_redis set对象_02

  5. 判断< key>是否含有< value>值,有:1 ,无:0
    sismember < value>
  6. redis set对象 redis set类型_java_03

  7. 返回集合的元素个数
    scard
  8. redis set对象 redis set类型_Redis_04

  9. 删除集合钟的某个元素
    srem < key> < value2> …
  10. redis set对象 redis set类型_Redis_05

  11. 随机从该集合中吐出一个值
    spop < key>
  12. redis set对象 redis set类型_哈希算法_06

  13. 随即从集合中取出n个值,不会从集合中删除
    srandmember < key> < n>
  14. redis set对象 redis set类型_redis_07

  15. 把集合中的一个值从一个集合移动到另一个集合
    smove < destination> < value>
  16. redis set对象 redis set类型_redis set对象_08

  17. 返回两个集合的交集元素
    sinter < key1> < key2>
  18. redis set对象 redis set类型_哈希算法_09

  19. 返回两个集合的并集元素
    sunion < key1> < key2>
  20. redis set对象 redis set类型_Redis_10

  21. 返回两个集合的差集元素 (key1 中有,但key2中没有的)
    sdiff < key1> < key2>
  22. redis set对象 redis set类型_java_11


  23. redis set对象 redis set类型_redis_12