Redis 集合(Set)学习笔记

1. 简介

在 Redis 中,集合(Set)是一种无序的、不重复的数据结构。Redis 的集合提供了添加、删除和判断一个元素是否存在于集合中等基本操作,以及对多个集合进行交、并、差等操作。

Redis 的集合底层实现是字典(Hash Table),因此集合的添加、删除、查找操作具有 O(1) 的时间复杂度。

2. 集合操作命令

2.1 添加元素

将一个或多个元素加入到集合中。

bashCopy Code
SADD key member [member ...]

示例:

bashCopy Code
SADD myset "hello" SADD myset "world" SADD myset "redis"

2.2 获取元素个数

获取集合中元素的数量。

bashCopy Code
SCARD key

示例:

bashCopy Code
SCARD myset

2.3 判断元素是否存在

判断一个元素是否在集合中。

bashCopy Code
SISMEMBER key member

示例:

bashCopy Code
SISMEMBER myset "hello" SISMEMBER myset "foo"

2.4 删除元素

将一个或多个元素从集合中删除。

bashCopy Code
SREM key member [member ...]

示例:

bashCopy Code
SREM myset "redis" SREM myset "foo"

2.5 获取所有元素

获取集合中所有元素。

bashCopy Code
SMEMBERS key

示例:

bashCopy Code
SMEMBERS myset

2.6 随机获取元素

从集合中随机获取一个元素。

bashCopy Code
SRANDMEMBER key [count]

示例:

bashCopy Code
SRANDMEMBER myset SRANDMEMBER myset 2

2.7 获取集合的交集

获取多个集合的交集。

bashCopy Code
SINTER key [key ...]

示例:

bashCopy Code
SADD set1 "hello" SADD set1 "redis" SADD set2 "world" SINTER set1 set2

2.8 获取集合的并集

获取多个集合的并集。

bashCopy Code
SUNION key [key ...]

示例:

bashCopy Code
SADD set1 "hello" SADD set1 "redis" SADD set2 "world" SUNION set1 set2

2.9 获取集合的差集

获取一个集合与多个集合的差集。

bashCopy Code
SDIFF key [key ...]

示例:

bashCopy Code
SADD set1 "hello" SADD set1 "redis" SADD set2 "world" SDIFF set1 set2

3. 示例

下面是一个简单的案例,展示如何使用 Redis 的集合存储用户喜欢的电影:

pythonCopy Code
import redis # 连接 Redis 服务器 r = redis.Redis(host='localhost', port=6379, db=0) # 将用户 A 喜欢的电影添加到集合 movie:like:A 中 r.sadd('movie:like:A', 'The Shawshank Redemption') r.sadd('movie:like:A', 'Forrest Gump') r.sadd('movie:like:A', 'The Godfather') # 将用户 B 喜欢的电影添加到集合 movie:like:B 中 r.sadd('movie:like:B', 'Inception') r.sadd('movie:like:B', 'The Godfather') r.sadd('movie:like:B', 'The Dark Knight') # 获取所有用户喜欢的电影 movie_like_list = r.sunion('movie:like:A', 'movie:like:B') print("所有用户喜欢的电影:", movie_like_list)

以上代码会输出以下结果:

bashCopy Code
所有用户喜欢的电影: {b'The Shawshank Redemption', b'The Godfather', b'Forrest Gump', b'The Dark Knight', b'Inception'}

4. 总结

Redis 的集合是一种非常有用的数据结构,在处理需要去重、快速查找、集合运算等问题时提供了方便的操作。掌握集合的基本操作命令可以使您更加轻松地使用 Redis 存储和查询数据。