前言
如果您需要管理一组独一无二的元素集合——无论是用户 ID、文章标签还是邮件地址——并希望以高效的速度对其执行强大的集合运算,Redis Set 将是一个理想选择。它并非简单的列表,而是一种精妙的数据结构,将数学中的集合理论带入高性能数据库。
在本文中,我们将从基础概念讲起,逐步深入到高级的实际应用。我们将使用 C++ 库 redis-plus-plus 来演示所有示例,并逐行剖析代码。
Redis Set 究竟是什么?
Redis Set 是一个无序的、元素唯一的字符串集合。这个定义是其强大功能的基石,使其能够以惊人的速度进行成员资格检查、数量统计以及诸如交集、并集等复杂的服务器端运算。
第一章:基础入门 - 创建和查看你的第一个 Set
让我们从最基本的操作开始:如何向一个 Set 添加元素,以及如何查看它的全部内容。为此,我们将使用 SADD 和 SMEMBERS 这两个命令。
SADD:向集合中添加成员
SADD 是您向 Set 中添加一个或多个元素的主要工具。如果某个元素已经存在,Redis 会忽略它。该命令的返回值是新成功添加的元素的数量。
SMEMBERS:获取所有成员
SMEMBERS 返回指定 Set 中的所有成员。请注意:在拥有数百万元素的超大 Set 上使用此命令可能会暂时阻塞您的 Redis 服务器,因为它需要时间来准备所有数据。我们将在后续章节中讨论更安全的替代方案 SSCAN。
C++ 实战:sadd 与 smembers
#include <iostream>
#include <set>
#include <string>
#include <vector>
#include <iterator>
#include <sw/redis++/redis.h>
// 一个辅助函数,用于打印容器内容
template<typename T>
void PrintContainer(const T& container) {
for (const auto& elem : container) {
std::cout << elem << ;
}
std::cout << std::endl;
}
{
std::cout << << std::endl;
redis.();
redis.(, );
redis.(, {, , });
std::set<std::string> elems = {, , };
redis.(, elems.(), elems.());
std::set<std::string> result;
it = std::(result, result.());
redis.(, it);
(result);
}


