程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> Redis 系列 (一) StackExchange.Redis的使用,stackexchange.redis

Redis 系列 (一) StackExchange.Redis的使用,stackexchange.redis

編輯:C#入門知識

Redis 系列 (一) StackExchange.Redis的使用,stackexchange.redis


一、DLL安裝

    用NuGet搜索StackExchange.Redis,然後下載就可以。

    ConnectionMultiplexer對象是StackExchange.Redis最中樞的對象。這個類的實例需要被整個應用程序域共享和重用的,不要在每個操作中不停的創建該對象的實例,所以使用單例來創建和存放這個對象。

    代碼:

    

class RedisHelper
    {
     //不寫端口,默認6397
        static ConfigurationOptions configurationOptions = ConfigurationOptions.Parse("127.0.0.1" + ":" + "6379");
        static ConnectionMultiplexer redisConn;

        public static ConnectionMultiplexer RedisConn
        {
            get
            {
                return ConnectionMultiplexer.Connect(configurationOptions);
            }

        }
    }

  

  IDatabase db = redis.GetDatabase();

 這裡的GetDatabase() 返回的db對象是很輕量級別的,不需要被緩存起來,每次用每次取即可。IDatabase 的所有方法都有同步和異步的實現。其中的異步實現都是可以await的。

二、Strings的相關方法

    具體代碼:          

         var db = conn.GetDatabase();
                #region Strings命令
                string key = "keyTest1";
                //SET命令
                db.StringSet(key, "10");
                //GET命令
                string value = db.StringGet(key);
                Console.WriteLine(value);
                //APPEND命令
                db.StringAppend(key, "10");
                value = db.StringGet(key);
                Console.WriteLine(value);
                //有第二個參數(整數,參看StringIncrement方法)為DECRBY命令
                //沒有第二個參數為DECR命令
                db.StringDecrement(key);
                value = db.StringGet(key);
                Console.WriteLine(value);
                //有第二個參數為INCRBY命令
                //沒有第二個參數為INCR命令
                db.StringIncrement(key, 2);
                value = db.StringGet(key);
                Console.WriteLine(value);
                string key2 = "keyTest";
                //SETEX命令,帶過期時間
                db.StringSet(key2, "keyTest2", new TimeSpan(0, 0, 5));
                string value2 = db.StringGet(key2);
                Console.WriteLine(value2);
                Thread.Sleep(5 * 1000);
                //超過5s後,查不到該值
                value2 = db.StringGet(key2);
                Console.WriteLine("5s later:" + value2);
                //GETSET命令,讀出原來的值,並附新值
                //下面兩個是測試
                value = db.StringGetSet(key, "2000");
                Console.WriteLine(value);
                value = db.StringGet(key);
                Console.WriteLine(value);
                //MSET命令
                db.StringSet(new KeyValuePair<RedisKey, RedisValue>[] { 
                            new KeyValuePair<RedisKey, RedisValue>("key1", "value1"), 
                            new KeyValuePair<RedisKey, RedisValue>("key2", "value2"), });
                //MGET命令
                RedisValue[] values = db.StringGet(new RedisKey[] { "key1", "key2" });
                Console.WriteLine(values[0] + "&&" + values[1]);
                #endregion

  運行結果:

  Hashes的相關方法

    具體代碼:

    

         var db = conn.GetDatabase();
                #region Hash命令
                string key = "mykey";
                //避免key重復
                db.KeyDelete(key);
                //HSET命令
                db.HashSet(key, "a", "1");
                //HGET命令
                string value = db.HashGet(key, "a");
                Console.WriteLine(value);
                //HMSET
                db.HashSet(key, new HashEntry[] { new HashEntry("b", "2"), new HashEntry("c", "3") });
                //HMGET
                HashEntry[] values = db.HashGetAll(key);
                Console.WriteLine(values[0].Name + "///" + values[0].Value);
                //HDEL
                db.HashDelete(key, "c");
                string valuec = db.HashGet(key, "c");
                Console.WriteLine("c:" + valuec);
                //HEXISTS
                Console.WriteLine(db.HashExists(key, "a"));
                #endregion

  運行結果:

四、Lists的相關方法

    具體代碼:

    

          var db = conn.GetDatabase();
                #region List命令
                string key = "mykey";
                db.KeyDelete(key);
                //LPUSH
                long index = db.ListLeftPush(key, "test");
                //LINDEX,index返回總的長度,index必須減一
                string value = db.ListGetByIndex(key, index - 1);
                Console.WriteLine(value);
                //LINSTER
                long index2 = db.ListInsertAfter(key, "test", "testright");
                string value2 = db.ListGetByIndex(key, index2 - 1);
                Console.WriteLine(value2);
                long index3 = db.ListInsertBefore(key, "test", "testleft");
                string value3 = db.ListGetByIndex(key, index - 1);
                //LRANGE
                RedisValue[] values = db.ListRange(key);
                Console.WriteLine("values:begin");
                values.ToList().ForEach((v) =>
                {
                    Console.WriteLine(v);
                });
                Console.WriteLine("values:end");
                //LREM
                long index4 = db.ListRemove(key, "test");
                values = db.ListRange(key);
                Console.WriteLine("values2:begin");
                values.ToList().ForEach((v) =>
                {
                    Console.WriteLine(v);
                });
                Console.WriteLine("values2:end");
                //LPOP
                string value5 = db.ListLeftPop(key);
                Console.WriteLine(value5);
                values = db.ListRange(key);
                Console.WriteLine("values3:begin");
                values.ToList().ForEach((v) =>
                {
                    Console.WriteLine(v);
                });
                Console.WriteLine("values3:end");
                Console.WriteLine(value3);
                #endregion

  

    運行結果:

 

五、最後

    現在只簡單學會使用Strings、Hashes和Lists,還有很多以後再研究使用。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved