Redis 集合(Set)

命令 描述 语法
SADD 向集合中添加一个或多个成员 SADD key member1 [member2 ...]
SMEMBERS 返回集合中的所有成员 SMEMBERS key
SINTER 返回多个集合的交集 SINTER key1 [key2 ...]
SINTERSTORE 将多个集合的交集存储到一个新集合中 SINTERSTORE destination key1 [key2 ...]
SUNION 返回多个集合的并集 SUNION key1 [key2 ...]
SUNIONSTORE 将多个集合的并集存储到一个新集合中 SUNIONSTORE destination key1 [key2 ...]
SDIFF 返回第一个集合与其他集合的差集 SDIFF key1 [key2 ...]
SDIFFSTORE 将第一个集合与其他集合的差集存储到一个新集合中 SDIFFSTORE destination key1 [key2 ...]
SISMEMBER 判断成员是否是集合的成员 SISMEMBER key member
SCARD 获取集合中成员的数量 SCARD key
SPOP 随机移除并返回集合中的一个成员 SPOP key [count]
- count(可选):指定移除并返回的成员数量
SRANDMEMBER 随机返回集合中的一个或多个成员,不删除成员 SRANDMEMBER key [count]
- count(可选):指定返回的成员数量。正数表示返回不重复的成员,负数表示返回可能重复的成员
SREM 从集合中移除一个或多个成员 SREM key member1 [member2 ...]

场景示例

1. 去重

假设我们要统计网站的独立访客 IP 地址,使用集合可以轻松实现去重。

记录访客 IP(Java 代码示例)

import redis.clients.jedis.Jedis;

public class VisitorRecorder {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost");
        String visitorSetKey = "website:visitors";
        String visitorIp = "192.168.1.100";

        // 向集合中添加访客 IP
        jedis.sadd(visitorSetKey, visitorIp);
        System.out.println("记录访客 IP: " + visitorIp);

        jedis.close();
    }
}

统计独立访客数量(Java 代码示例)

import redis.clients.jedis.Jedis;

public class VisitorCounter {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost");
        String visitorSetKey = "website:visitors";

        // 获取独立访客数量
        Long uniqueVisitorCount = jedis.scard(visitorSetKey);
        System.out.println("独立访客数量: " + uniqueVisitorCount);

        jedis.close();
    }
}

2. 共同好友

假设有两个用户,我们要找出他们的共同好友。

添加用户好友(Java 代码示例)

import redis.clients.jedis.Jedis;

public class FriendAdder {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost");
        String user1FriendsKey = "user:1:friends";
        String user2FriendsKey = "user:2:friends";

        // 添加用户 1 的好友
        jedis.sadd(user1FriendsKey, "Alice", "Bob", "Charlie");
        // 添加用户 2 的好友
        jedis.sadd(user2FriendsKey, "Bob", "Charlie", "David");

        jedis.close();
    }
}

找出共同好友(Java 代码示例)

import redis.clients.jedis.Jedis;
import java.util.Set;

public class CommonFriendFinder {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost");
        String user1FriendsKey = "user:1:friends";
        String user2FriendsKey = "user:2:friends";

        // 获取两个用户的共同好友
        Set<String> commonFriends = jedis.sinter(user1FriendsKey, user2FriendsKey);
        System.out.println("共同好友: " + commonFriends);

        jedis.close();
    }
}

3. 点赞列表

假设我们要记录一篇文章的点赞用户,并实现一些相关功能,如判断用户是否点赞、获取点赞用户数量等。

用户点赞文章(Java 代码示例)

import redis.clients.jedis.Jedis;

public class Liker {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost");
        String articleLikesKey = "article:1:likes";
        String userId = "user:101";

        // 用户点赞文章
        jedis.sadd(articleLikesKey, userId);
        System.out.println("用户 " + userId + " 点赞了文章");

        jedis.close();
    }
}

判断用户是否点赞(Java 代码示例)

import redis.clients.jedis.Jedis;

public class LikeChecker {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost");
        String articleLikesKey = "article:1:likes";
        String userId = "user:101";

        // 判断用户是否点赞
        boolean isLiked = jedis.sismember(articleLikesKey, userId);
        if (isLiked) {
            System.out.println("用户 " + userId + " 已点赞文章");
        } else {
            System.out.println("用户 " + userId + " 未点赞文章");
        }

        jedis.close();
    }
}

获取点赞用户数量(Java 代码示例)

import redis.clients.jedis.Jedis;

public class LikeCounter {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost");
        String articleLikesKey = "article:1:likes";

        // 获取点赞用户数量
        Long likeCount = jedis.scard(articleLikesKey);
        System.out.println("点赞用户数量: " + likeCount);

        jedis.close();
    }
}
#我的2024牛客高光时刻##牛客创作赏金赛#
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务