redis是一个高速缓存的key-values数据库,它支持五种的数据类型,包括字符串类型(string)、列表(list)、集合(set)、有序集合(zset)、哈希(hash)。下面我们来详细分析redis集合(set)类型的使用和应用场景。

redis集合(set)类型和list列表类型类似,都可以用来存储多个字符串元素的集合。但是和list不同的是set集合当中不允许重复的元素,而且set集合当中元素是没有顺序的,不存在元素下标。

redis的set类型是使用哈希表构造的,因此复杂度是O(1),它支持集合内的增删改查,并且支持多个集合间的交集、并集、差集操作。可以利用这些集合操作,解决程序开发过程当中很多数据集合间的问题。

Redis set类型的操作命令如下:

smembers [set]
JedisAPI:public Set<String> smembers(final String key)
功能:查看set中的元素

sadd [set] [value]
JedisAPI:public Long sadd(final String key, final String... member)
功能:向set中插入value,成功插入返回1,插入set中已有的value则失败且返回0

srem [set] [value]
JedisAPI:删除set中对应的value,删除成功返回1,若不存在则返回0
功能:public Long srem(final String key, final String... member)

spop [set]
JedisAPI:public String spop(final String key)
功能:随机删除并返回set中的元素

sdiff [set1] [set2]
JedisAPI:无
功能:删除set1中在set2里也存在的元素,返回删除操作后的set1

sdiffstore [set1] [set2] [set3]
JedisAPI:无
功能:将sdiff [set2] [set3] 的结果保存在set1中

sinter [set1] [set2]
JedisAPI:无
功能:返回set1 set2共有元素

sinterstore [set1] [set2] [set3]
JedisAPI:无
功能:将sinter [set2] [set3] 结果保存在set1中

sunion [set1] [set2]
JedisAPI:无
功能:返回[set1] [set2]的并集

sunionstore [set1] [set2] [set3]
JedisAPI:无
功能:将[set2] [set3]的并集保存在[set1]中

smove [set1] [set2] [value]
JedisAPI:无
功能:将[set1] 的value移动到set2中,若value存在于set1,无论set2是否已存在,都(成功)返回1,不存在于set1则(失败)返回0

scard [set]
JedisAPI:public Long scard(final String key)
功能:返回set中的元素个数

sismember [set] [value]
JedisAPI:public Boolean sismember(final String key, final String member)
功能:判断value是否为set中的元素,是则返回1,否则返回0

srandmember [set]
JedisAPI:public String srandmember(final String key)
功能: 随机返回set中的一个元素

标签: none

添加新评论