zoukankan      html  css  js  c++  java
  • 阿里云-Redis-Help-连接实例-Redis客户端连接:C#客户端StackExchange.Redis

    ylbtech-阿里云-Redis-Help-连接实例-Redis客户端连接:C#客户端StackExchange.Redis
    1.返回顶部
    1、

    C#客户端StackExchange.Redis

    操作步骤如下所示:

    1. 下载并安装StackExchange.Redis
    2. 添加引用。 
      using StackExchange.Redis;
    3. 初始化ConnectionMultiplexer。

      ConnectionMultiplexer是StackExchange.Redis的核心,它被整个应用程序共享和重用,应该设置为单例,它的初始化如下: 

       // redis config
       private static ConfigurationOptions configurationOptions = ConfigurationOptions.Parse("127.0.0.1:6379,password=xxx,connectTimeout=2000");
        //the lock for singleton
       private static readonly object Locker = new object();
        //singleton
       private static ConnectionMultiplexer redisConn;
       //singleton
       public static ConnectionMultiplexer getRedisConn()
       {
           if (redisConn == null)
           {
               lock (Locker)
               {
                   if (redisConn == null || !redisConn.IsConnected)
                   {
                       redisConn = ConnectionMultiplexer.Connect(configurationOptions);
                   }
               }
           }
           return redisConn;
       }
      说明

      ConfigurationOptions包含很多选项,例如keepAlive、connectRetry、name,具体可以参考StackExchange.Redis.ConfigurationOptions

    4. GetDatabase()返回的对象是轻量级的,每次用的时候从ConnectionMultiplexer对象中获取即可。 
       redisConn = getRedisConn();
       var db = redisConn.GetDatabase();
    5. 下面给出5种数据结构的demo,它们的API和原生略有不同分别用String、Hash、List、Set、SortedSet开头代表5种数据结构
      • string: 

        //set get
        string strKey = "hello";
        string strValue = "world";
        bool setResult = db.StringSet(strKey, strValue);
        Console.WriteLine("set " + strKey + " " + strValue + ", result is " + setResult);
        //incr
        string counterKey = "counter";
        long counterValue = db.StringIncrement(counterKey);
        Console.WriteLine("incr " + counterKey + ", result is " + counterValue);
        //expire
        db.KeyExpire(strKey, new TimeSpan(0, 0, 5));
        Thread.Sleep(5 * 1000);
        Console.WriteLine("expire " + strKey + ", after 5 seconds, value is " + db.StringGet(strKey));
        //mset mget
        KeyValuePair<RedisKey, RedisValue> kv1 = new KeyValuePair<RedisKey, RedisValue>("key1", "value1");
        KeyValuePair<RedisKey, RedisValue> kv2 = new KeyValuePair<RedisKey, RedisValue>("key2", "value2");
        db.StringSet(new KeyValuePair<RedisKey, RedisValue>[] {kv1,kv2});            
        RedisValue[] values = db.StringGet(new RedisKey[] {kv1.Key, kv2.Key});
        Console.WriteLine("mget " + kv1.Key.ToString() + " " + kv2.Key.ToString() + ", result is " + values[0] + "&&" + values[1]);
      • hash 
        string hashKey = "myhash";
        //hset
        db.HashSet(hashKey,"f1","v1");
        db.HashSet(hashKey,"f2", "v2");
        HashEntry[] values = db.HashGetAll(hashKey);
        //hgetall
        Console.Write("hgetall " + hashKey + ", result is");
        for (int i = 0; i < values.Length;i++) 
        {
          HashEntry hashEntry = values[i];
          Console.Write(" " + hashEntry.Name.ToString() + " " + hashEntry.Value.ToString());
        }
        Console.WriteLine();
      • list 
        //list key
        string listKey = "myList";
        //rpush
        db.ListRightPush(listKey, "a");
        db.ListRightPush(listKey, "b");
        db.ListRightPush(listKey, "c");
        //lrange
        RedisValue[] values = db.ListRange(listKey, 0, -1);
        Console.Write("lrange " + listKey + " 0 -1, result is ");
        for (int i = 0; i < values.Length; i++)
        {
         Console.Write(values[i] + " ");
        }
        Console.WriteLine();
      • set 
        //set key
        string setKey = "mySet";
        //sadd
        db.SetAdd(setKey, "a");
        db.SetAdd(setKey, "b");
        db.SetAdd(setKey, "c");
        //sismember
        bool isContains = db.SetContains(setKey, "a");
        Console.WriteLine("set " + setKey + " contains a is " + isContains );
      • sortedset 
        string sortedSetKey = "myZset";
        //sadd
        db.SortedSetAdd(sortedSetKey, "xiaoming", 85);
        db.SortedSetAdd(sortedSetKey, "xiaohong", 100);
        db.SortedSetAdd(sortedSetKey, "xiaofei", 62);
        db.SortedSetAdd(sortedSetKey, "xiaotang", 73);
        //zrevrangebyscore
        RedisValue[] names = db.SortedSetRangeByRank(sortedSetKey, 0, 2, Order.Ascending);
        Console.Write("zrevrangebyscore " + sortedSetKey + " 0 2, result is ");
        for (int i = 0; i < names.Length; i++)
        {
          Console.Write(names[i] + " ");
        }
        Console.WriteLine();
    2、
    2.返回顶部
     
    3.返回顶部
     
    4.返回顶部
     
    5.返回顶部
    1、
    2、
     
    6.返回顶部
     
    warn 作者:ylbtech
    出处:http://ylbtech.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    错题记录——关于Java中private的用法(类与封装)
    深度学习-人脸识别-数据集和制作
    UE4使用经验记录
    pycharm 一直索引或索引过大占用系统盘问题
    深度学习portoch笔记_概念随笔
    mysql 找不到请求的 .Net Framework Data Provider。可能没有安装。
    halcon崩溃/异常信号11 后文件临时存储路径
    halcon 错误记录
    visual studio 2012 C#exe嵌入到子窗口,程序退出后子exe文件仍然被占用
    文件操作
  • 原文地址:https://www.cnblogs.com/storebook/p/12657977.html
Copyright © 2011-2022 走看看