• RedisUtil(未完,持续更新中....)


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    using Newtonsoft.Json;
    using StackExchange.Redis;
    
    namespace Common.Util
    {
      public  class RedisUtil
        {
            #region init
            private static object lockForRedis = new object();//连接实例锁
            private static ConnectionMultiplexer Instance;  //连接实例
            /// <summary>
            /// 默认开始就给连接
            /// </summary>
            static RedisUtil()
            {
               GetConn();   //--初始就实例化
            }
            /// <summary>
            /// 获取连接
            /// </summary>
            /// <returns></returns>
            private static ConnectionMultiplexer GetConn()
            {
                if (Instance == null)
                {
                    lock (lockForRedis)
                    {
                        if (Instance == null || !Instance.IsConnected)
                        {
                            Instance = ConnectionMultiplexer.Connect(GetConfig());
                           
                        }
                    }
                }
                return Instance;
            }
            /// <summary>
            /// 获取配置
            /// </summary>
            /// <returns></returns>
            private static ConfigurationOptions GetConfig()
            {
                ConfigurationOptions options = new ConfigurationOptions();
               
                
                options.EndPoints.Add("localhost",6379);
                options.ConnectTimeout = 6000;  //超时时间设置(默认5000)
                options.ConnectRetry = 1;       //连接重试周期
                return options;
            }
            #endregion
            #region String
            /// <summary>
            /// 设置String值
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="key"></param>
            /// <param name="value"></param>
            /// <param name="timeSpan"></param>
            /// <param name="dbIndex"></param>
            /// <returns></returns>
            public static bool StringSet<T>(string key,T value,TimeSpan? timeSpan=null,int dbIndex=0)
            {
                try
                {
                    var db = GetConn().GetDatabase(dbIndex);
                    return db.StringSet(key, JsonConvert.SerializeObject(value),timeSpan);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                    return false;
                }
    
               
            }
            /// <summary>
            /// 获取String值
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="key"></param>
            /// <param name="dbIndex"></param>
            /// <returns></returns>
            public static T StringGet<T>(string key,int dbIndex=0)
            {  
                try
                {
                    var db = GetConn().GetDatabase(dbIndex);
                    return JsonConvert.DeserializeObject<T>(db.StringGet(key));
                }
                catch(Exception ex)
                {
                    Console.WriteLine(ex);
                    return default(T);
                }
                
            }
            /// <summary>
            /// 存入递增类型的键值
            /// </summary>
            /// <param name="key"></param>
            /// <param name="value"></param>
            /// <param name="dbIndex"></param>
            /// <returns></returns>
            public static double StringIncrement(string key, double value, int dbIndex = 0)
            {
                try
                {
                    var db = GetConn().GetDatabase(dbIndex);
                    return db.StringIncrement(key,value);
                }
                catch (Exception ex)
                {
    
                    return 0;
                }
            }
            /// <summary>
            /// 存入递减类型的键值
            /// </summary>
            /// <param name="key"></param>
            /// <param name="value"></param>
            /// <param name="dbIndex"></param>
            /// <returns></returns>
            public static double StringDecrement(string key,double value,int dbIndex = 0)
            {
                try
                {
                    var db = GetConn().GetDatabase(dbIndex);
                    return db.StringDecrement(key, value);
                }
                catch (Exception ex)
                {
    
                    return 0;
                }
            }
            #endregion
        }
    }
    

      

    力争写最通俗易懂的文章,不添加任何防腐剂~~~
  • 相关阅读:
    通过java客户端连接hbase 注意事项
    深入HBase架构解析(一)
    Zookeeper全解析——Paxos作为灵魂
    redis常用数据结构解析
    job源码分析
    《RHEL6.3 FTP服务器虚拟用户的配置(含图)》——如此简单
    《SELinux安全上下文的管理(含图)》RedHat6.3——步骤详细、条理清晰
    什么是MBR?(含图解)
    何为软连接、何为硬链接(含图解)
    RHEL6.3 ftp服务器参数的戏说——不看白不看,看了不白看
  • 原文地址:https://www.cnblogs.com/diligent-lsh/p/9939412.html
Copyright © 2020-2023  润新知