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(); } }