如何像连接SQL一样配置Redis连接字符串

在用C#连接SQL数据库时,我们需要在Config配置文件里面配置SQL连接字符串,同样,在连接Redis时,也可以配置连接字符串:

="RedisTest"  WriteServer="127.0.0.1:6379,password=123456,connectTimeout=1000,connectRetry=1
,syncTimeout=1000"/>

注释:

  • 127.0.0.1:6379:IP,端口
  • password:Redis密码
  • connectTimeout:连接超时时间,这里设置的是1000毫秒
  • connectRetry:重试连接次数
  • syncTimeout:同步操作默认超时时间

附上RedisHelper源代码(需添加StackExchange.Redis引用)

  #region Redis帮助类
    /// 
    /// Redis帮助类
    /// 
    public class RedisHelper
    {
        /// 
        /// 连接字符串,一般写在配置文件里面
        /// 
        private static readonly string ConnectionString = "127.0.0.1:6379,password=123456,connectTimeout=1000,connectRetry=1,syncTimeout=1000";
        /// 
        /// 上锁,单例模式
        /// 
        private static object locker = new object();
        /// 
        /// 连接对象
        /// 
        private volatile IConnectionMultiplexer _connection;
        /// 
        /// 数据库
        /// 
        private IDatabase _db;
        #region 创建Redis实例
        public RedisHelper()
        {
            _connection = ConnectionMultiplexer.Connect(ConnectionString);
            _db = GetDatabase();
        }

        private static RedisHelper redisHelper;

        public static RedisHelper GetRedisHelper()
        {

            if (redisHelper == null)
            {
                lock (locker)
                {
                    if (redisHelper == null)
                    {
                        redisHelper = new RedisHelper();
                    }
                }
            }
            return redisHelper;
        }
        #endregion


        /// 
        /// 获取连接
        /// 
        /// 
        protected IConnectionMultiplexer GetConnection()
        {
            if (_connection != null && _connection.IsConnected)
            {
                return _connection;
            }
            lock (locker)
            {
                if (_connection != null && _connection.IsConnected)
                {
                    return _connection;
                }

                if (_connection != null)
                {
                    _connection.Dispose();
                }
                _connection = ConnectionMultiplexer.Connect(ConnectionString);
            }

            return _connection;
        }
        /// 
        /// 获取数据库
        /// 
        /// 
        /// 
        public IDatabase GetDatabase(int? db = null)
        {
            return GetConnection().GetDatabase(db ?? -1);
        }
        /// 
        /// 设置
        /// 
        /// 键
        /// 值
        /// 过期时间
        public virtual void Set(string key, object data, int? cacheTime=null)
        {
            if (data == null)
            {
                return;
            }
            var entryBytes = Serialize(data);
            if (cacheTime != null)
            {
                var expiresIn = TimeSpan.FromMinutes(Convert.ToDouble(cacheTime));
                _db.StringSet(key, entryBytes, expiresIn);
            }
            else
            {
                _db.StringSet(key, entryBytes);
            }

        }

        /// 
        /// 根据键获取值
        /// 
        /// 
        /// 
        /// 
        public virtual T Get(string key)
        {
            var rValue = _db.StringGet(key);
            if (!rValue.HasValue)
            {
                return default(T);
            }

            var result = Deserialize(rValue);

            return result;
        }

        /// 
        /// 判断键是否已存在
        /// 
        /// 
        /// 
        public bool IsExit(string key)
        {
            return _db.KeyExists(key);
        }

        /// 
        /// 判断是否已经设置
        /// 
        /// 
        /// 
        public virtual bool IsSet(string key)
        {
            return _db.KeyExists(key);
        }
        /// 
        /// 序列化
        /// 
        /// 
        /// byte[]
        private byte[] Serialize(object data)
        {
            var json = JsonConvert.SerializeObject(data);
            return Encoding.UTF8.GetBytes(json);
        }

        /// 
        /// 反序列化
        /// 
        /// 
        /// 
        /// 
        protected virtual T Deserialize(byte[] serializedObject)
        {
            if (serializedObject == null)
            {
                return default(T);
            }
            var json = Encoding.UTF8.GetString(serializedObject);
            return JsonConvert.DeserializeObject(json);
        }
    }
    #endregion
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
连接Redis时,可以使用连接字符串进行配置连接字符串包括以下几个参数: - IP和端口:指定Redis服务器的IP地址和端口号,例如"127.0.0.1:6379"表示本地主机IP地址为127.0.0.1,端口号为6379。 - password:指定Redis服务器的密码,如果有密码设置,需要在连接字符串中添加"password=密码",例如"password=123456"表示密码为123456。 - connectTimeout:指定连接超时时间,单位为毫秒,表示在指定的时间内尝试连接Redis服务器,如果超时则连接失败。 - connectRetry:指定重试连接次数,表示在连接失败后进行重试连接的次数。 - syncTimeout:指定同步操作的默认超时时间,单位为毫秒,表示在执行同步操作时,如果超过指定的时间还未完成,则视为超时。 所以,一个Redis连接字符串的示例可以是:"RedisTest" WriteServer="127.0.0.1:6379,password=123456,connectTimeout=1000,connectRetry=1,syncTimeout=1000"。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* *2* [如何像连接SQL一样配置Redis连接字符串](https://blog.csdn.net/WuLex/article/details/119829164)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值