Redis的SET是無序的String集合,它裡面的元素是不會重複的。
SADD,SMEMBERS
SADD指令會添加新元素到SET,可以看到一次性可以添加一個或多個元素。
SMEMBERS可以擷取set裡所有的元素,但是每次調用得到結果的順序是無法保證的。

SISMEMBER
SISMEMBER可以判斷某個元素是否在set裡,傳回1表示存在,0表示不存在
SINTER
SINTER可以檢視多個set之間的交集
SPOP
SPOP可以随機從set中移除一個或多個元素并傳回
SUNIONSTORE
如果隻有一個set需要合并的話,那麼就相當于是複制,原來的資料保留
SCARD
SRANDMEMBER
SRANDMEMBER可以随機擷取set裡面的元素,但是不會移除它們
C#操作SET
class Program
{
static void Main(string[] args)
{
ConnectionMultiplexer connectionMultiplexer = ConnectionMultiplexer.Connect("120.132.116.153:6379");
IDatabase database = connectionMultiplexer.GetDatabase(0);
database.KeyDelete("set1");
database.KeyDelete("set2");
//SADD
database.SetAdd("set1", new RedisValue[] { 0, 1, 2, 3, 4, 5, 6 });
//SNENBERS
var sets = database.SetMembers("set1");
foreach (var set in sets)
{
Console.WriteLine($"{set}");
}
Console.WriteLine($"{database.SetContains("set1", 0)}");
Console.WriteLine($"{database.SetContains("set1", 10)}");
Console.WriteLine("---------------------------");
//SADD
database.SetAdd("set2", new RedisValue[] { 4, 5, 6 });
//SINTER
var sets1 = database.SetCombine(SetOperation.Intersect,
new RedisKey[] {"set1", "set2"});
foreach (var set in sets1)
{
Console.WriteLine($"{set}");
}
Console.WriteLine("---------------------------");
//SUNIONSTORE
var sets2 = database.SetCombine(SetOperation.Union,
new RedisKey[] { "set1", "set2" });
foreach (var set in sets2)
{
Console.WriteLine($"{set}");
}
Console.WriteLine("---------------------------");
//SCARD
Console.WriteLine($"{database.SetLength("set1")}");
Console.WriteLine("---------------------------");
//SRANDMEMBER
Console.WriteLine($"{database.SetRandomMember("set1")}");
Console.WriteLine($"{database.SetRandomMember("set1")}");
Console.WriteLine($"{database.SetRandomMember("set1")}");
Console.ReadLine();
}
}