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