你的位置:首页 > ASP.net教程

[ASP.net教程]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,还有很多以后再研究使用。