zoukankan      html  css  js  c++  java
  • Basic Tutorials of Redis(4) -Set

      This post will introduce you to some usages of Set in Redis.The Set is a unordered set,it means that the

    data was stored in the database randomly.And there are 15 commands you can use in Redis,the same as Hash.

      

      For storing the data to database,we can use the command sadd to finish the job.The sadd is very powerful,we

    can not only use it to add a single value to the key,but also multi values.For example,I add 11 to the key named

    set-1 at first.Laterly I add 12 ~15 too.So easy the command is.When you execute the sadd command , the client

    will return the amount of the set.

    sadd set-1 11
    sadd set-1 12 13 14 15

       After executing the command sadd,it will return a integer to show us the amount of this set.But what can we

    know the members of this set?We can use smembers to get all of the members in the set.

    smembers set-1

      There are two commands to help us to remove the members of the set.The spop command will remove a or multi

    member of the set randomly.As the following picture,I remove a member from the set-1 firstly,and then I remove two

    members from the set-1.At last,we will find that the set-1 only has 11 and 13.

    spop set-1
    spop set-1 2

     

      srem,the second command of removing members from the set,can remove the members from the set by your own

    ideas,not randomly.I removed the last two members from the set-1 by this command.At this time,I want to get all of the

    members of the set-1 ,you will get the information that the set is empty.

    srem set-1 11 13

     

      When we are coding , the most things we do is to judge a member whether exists in the set.In Redis,you can do this

    thing as well.The set-1 is empty now,I judge the member 11 whether exists in the set-11,it returns 0 meaning 11 is not

    the member of the set.After adding members to this set,the second time to judge returns 1 meaning 11 is the member of set-1.

    sismember set-1 11

       As all you know,we use the Property length or the method count to get how many members in the array by using C#.

    In Redis,we get the numbers of members in a set by using scard.

    scard set-1

       The commands I will show you next needs at lease two sets,so I have to add another one.And you will be familiar with

    the set opreation of Mathematical.Command sinter will return the command members both set-1 and set-2 contain.Command

    sunion will return all of the members both set-1 and set-2 contian.Command sdiff will return the difference members from the sets.

    sinter set-1 set-2
    sunion set-1 set-2
    sdiff set-1 set-2
    sdiff set-2 set-1

     

      We can store the result of the set opreation too.
    sinterstore inter-set set-1 set-2
    sunionstore union-set set-1 set-2
    sdiffstore diff-set-1 set-1 set-2
    sdiffstore diff-set-2 set-2 set-1

       After showing the native commands,we should turn to the usage of StackExchange.Redis.

                 //sadd smembers
                db.SetAdd("set-1", 11);
                var set_1 = new RedisValue[4] {12,13,14,15 };
                db.SetAdd("set-1", set_1);
                Console.WriteLine("the members of the set-1 :");
                foreach (var item in db.SetMembers("set-1"))
                {
                    Console.WriteLine(item);
                }
    
                //spop srem
                Console.WriteLine(string.Format("the value was poped is {0}", db.SetPop("set-1")));
                Console.WriteLine(string.Format("the value was poped is {0}", db.SetPop("set-1")));
                Console.WriteLine(string.Format("the value was poped is {0}", db.SetPop("set-1")));
                
                db.SetRemove("set-1", db.SetMembers("set-1"));
                Console.WriteLine(string.Format("amount of set-1 is {0}", db.SetMembers("set-1").Length));
    
                //sismember
                Console.WriteLine(string.Format("11 {0} the member of set-1",db.SetContains("set-1",11)?"is":"isn't"));
                var set_1_again = new RedisValue[5] {11, 12, 13, 14, 15 };
                db.SetAdd("set-1", set_1_again);
                Console.WriteLine(string.Format("11 {0} the member of set-1", db.SetContains("set-1", 11) ? "is" : "isn't"));
    
                //scard
                Console.WriteLine(string.Format("amount of set-1 is {0}", db.SetLength("set-1")));
    
                var set_2 = new RedisValue[4] { 13, 14, 15,16 };
                db.SetAdd("set-2", set_2);
    
                //sinter
                Console.WriteLine("the result of intersect:");
                foreach (var item in db.SetCombine(SetOperation.Intersect, new RedisKey[2] { "set-1", "set-2" }))
                {
                    Console.WriteLine(item);
                }
                // sunoin 
                Console.WriteLine("the result of union:");
                foreach (var item in db.SetCombine(SetOperation.Union, new RedisKey[2] { "set-1", "set-2" }))
                {
                    Console.WriteLine(item);
                }
                //sdiff
                Console.WriteLine("the result of difference1:");
                foreach (var item in db.SetCombine(SetOperation.Difference, new RedisKey[2] { "set-1", "set-2" }))
                {
                    Console.WriteLine(item);
                }
    
                Console.WriteLine("the result of difference2:");
                foreach (var item in db.SetCombine(SetOperation.Difference, new RedisKey[2] { "set-2", "set-1" }))
                {
                    Console.WriteLine(item);
                }
            
      When you debug the codes,the results are as follow.

       

      The next post of this series is the basic opreation of Sorted Set in Redis.
  • 相关阅读:
    iOS应用开发最佳实践
    Pywinauto 基于Win32 程序的自动化功能测试工具
    通信系统概论---电路交换与分组交换
    手动设置3G的wifi迷你无线路由
    作为一个软件测试工作者的思考
    中国人咋对“拼爹”现象如此诟病?
    HLS协议实现
    div:给div加滚动栏 div的滚动栏设置
    关于PCA算法的一点学习总结
    搜索引擎技术之概要预览
  • 原文地址:https://www.cnblogs.com/catcher1994/p/5843371.html
Copyright © 2011-2022 走看看