Redis 集合(Set)是一种无序且不重复的字符串集合,可以用于存储一系列唯一的元素。集合的这种特性使其在很多场景下非常有用,例如用户兴趣标签管理、黑名单存储、好友关系列表等。本文将详细介绍 Redis 集合的基本概念、常用命令,并通过实战案例展示集合在实际项目中的应用。
集合中的每个元素都是一个字符串,集合中的元素不允许重复,这意味着集合自动去重,这在处理大量数据时非常有用,可以避免存储重复项带来的资源浪费。集合中的元素是无序的,这意味着集合中的元素没有固定的顺序,这与列表和有序集合不同。
SADD myset member1 member2
SCARD myset
SDIFF set1 set2
,返回在 set1 中但不在 set2 中的元素。SDIFFSTORE diff_set set1 set2
SINTER set1 set2
,返回同时在 set1 和 set2 中的元素。SINTERSTORE inter_set set1 set2
SISMEMBER myset member1
SMEMBERS myset
SPOP myset
SRANDMEMBER myset 5
SREM myset member1
SUNION set1 set2
,返回 set1 或 set2 中的元素。SUNIONSTORE union_set set1 set2
假设我们正在开发一个内容推荐系统,需要为每个用户存储他们感兴趣的主题标签,以便根据这些标签为用户推荐相关的内容。
redis-cli DEL user:123:interests
redis-cli SADD user:123:interests tech music travel
redis-cli SADD user:123:interests sports
redis-cli SMEMBERS user:123:interests
redis-cli SISMEMBER user:123:interests music
redis-cli SREM user:123:interests travel
假设我们有多个用户集合,我们可以使用SINTER
命令来找出他们的共有兴趣标签:
redis-cli SINTER user:123:interests user:456:interests
假设我们需要维护一个黑名单,存储不允许访问网站的用户ID。
redis-cli DEL blacklist
redis-cli SADD blacklist user1 user2
redis-cli SISMEMBER blacklist user1
redis-cli SREM blacklist user1