一、简介
和上文的list作用基本一样,提供了一个列表来进行存储。不同的地方在于,set的元素是不可以重复的并且也是无序的。
二、常用命令
- sadd key value value1 .......:将一个或者多个member放在set中,已经存在的忽略
- smembers key:取出该集合的所有值
- sismember key value:判断该key中是是否有该value,有返回1,没有返回0
- scard key :返回该集合的元素个数
- srem key value value1:删除集合中的某个元素
- spop key:随机从该集合中吐出一个值,也就意味着这个值被移除了。
- srandmember key n:随机从该集合取出n个值,值不会消失
- smove key1 key2 value:将key1的value值移动到key2中
- sinter key1 key2:返回两个的交集
- sunion key1 key2:返回两个的并集(就是两个的和)
- sdiff key1 key2:返回两个的差集
三、数据结构
set的数据结构是dict字典,字典是用哈希表实现的。java中的hashset的内部实现是使用hashMap,而redis中的set内部实现是hash并且所有的value值都指向同一个内部值。