Redis有6大基本类型,分别是字符串(String)、列表(List)、集合(set)、哈希结构(hash)、有序集合(zset)和基数(HyperLogLog)
redis在线体验地址:http://try.redis.io/
集合(Set)
介绍:
Redis的集合就是一个简单的字符串集合,该集合是无序的,且集合内的元素都是唯一的,也就是集合内不会出现重复元素。Redis中的集合是通过哈希表来实现的,所以获取集合中元素的时间复杂度为O(1)。
创建缓存
-
创建一个集合缓存,为集合新增元素
-
命令格式:
sadd key member [member ...]
-
🌰
sadd s1 1 2 3 0 -1 redis mongodb zookeeper --- 创建集合s1,元素为:1 2 3 0 -1 redis mongodb zookeeper
-
移除元素
-
随机移除集合中的一个元素并返回这个元素
-
命令格式:
spop key
-
🌰
spop s1 --- 移除之后,集合s1中就没有这个元素了
-
-
指定移除集合中一个或多个元素
-
命令格式:
srem key member [member ...]
-
🌰
srem s1 -1 0 99 --- 将元素-1、0、99从集合s1中移除,仅移除集合中存在的元素
-
查询集合
-
查询集合中元素个数
-
命令格式:
scard key
-
🌰
scard s1 --- 返回集合s1中元素总个数
-
-
返回集合中所有元素
-
命令格式:
smembers key
-
🌰
smembers s1 --- 返回集合s1中所有的元素
-
-
随机返回集合中的一个或多个元素
-
命令格式:
srandmember key [count]
-
🌰
srandmember s1 10 --- 随机返回集合s1中的10个元素,若不指定数量,则默认返回一个元素
-
-
迭代集合中的元素
-
命令格式:
sscan key cursor [MATCH pattern] [COUNT count]
-
🌰
sscan s1 0 match re* count 1 --- 迭代集合中re开头的所有元素,每次返回1个
-
-
判断元素是否存在于集合中
-
命令格式:
sismember key member
-
🌰
sismember s1 99 --- 若99存在于s1中,则返回1,不存在则返回0
-
多集合之间操作
-
查看多个集合的差集
-
命令格式:
sdiff key [key ...]
-
🌰
sdiff s1 s2 s3 --- 返回集合s1相对于s2、s3的差集,也就是只返回s1中所有不存在于s2、s3中的所有元素
-
-
多个集合的差集存储到指定集合中
-
命令格式:
sdiffstore destination key [key ...]
-
🌰
sdiffstore ds1 s1 s2 s3 --- 将s1中不存在于s2、s3中的元素存储到集合ds1中
-
-
查看多个集合的并集,去重
-
命令格式:
sunion key [key ...]
-
🌰
sunion s1 s2 s3 --- 将集合s1、s2、s3的元素合并去重后返回,所有元素均唯一
-
-
多个集合的并集存储到指定集合中
-
命令格式:
sunionstore destination key [key ...]
-
🌰
sunionstore us1 s1 s2 s3 --- 集合s1、s2、s3的并集存储到集合us1中,并返回集合us1中的元素个数
-
-
将一个集合中的某元素移动到另一个集合中
-
命令格式:
smove source destination member
-
🌰
smove s1 s2 -2 --- 将s1中的元素-2移动到集合s2中,若s2不存在,则自动创建
-
-
查看多个集合的交集
-
命令格式:
sinter key [key ...]
(interp) -
🌰
sinter s1 s3 --- 返回集合s1和集合s3的交集,也就是两个集合中都存在的数据 实际应用:查看两个人的共同好友;微信里查看和好友的共同群
-
-
多个集合的交集存储到指定集合中
-
命令格式:
sinterstore destination key [key ...]
-
🌰
sinterstore is1 s1 s3 --- 将s1和s3的交集元素存储到集合is1中
-