Redis 简单的帮助类


前言

Redis 内存数据库,使用起来不是特别的方便,下面进行一个简易的封装,实现简单且轻松的使用。


提示:以下是本篇文章正文内容,下面案例可供参考

一、选择 Redis 包

Redis 的包很多,作者这里采用:StackExchange.Redis 因为其功能完整。

二、使用步骤

1.引入库

代码如下(示例):

using StackExchange.Redis; // 包名:StackExchange.Redis
using Tool;// 因为下面用到了,也可以根据自己的理解,跟换其他方式。包名:Tool.Net

2.编写帮助类

代码如下(示例):

public class RedisClient
    {
        private static readonly object Locker = new();

        private ConnectionMultiplexer redisMultiplexer;

        private IDatabase Db { get; set; }

        private static RedisClient _redisClient;
        public static RedisClient Redis
        {
            get
            {
                if (_redisClient == null)
                {
                    lock (Locker)
                    {
                        if (_redisClient == null)
                        {
                            _redisClient = new RedisClient();
                        }
                    }
                }
                return _redisClient;
            }
        }
		
		/// <summary>
        /// 连接 Redis 库
        /// </summary>
		public void InitConnect()
        {
            try
            {
                var RedisConnection = Tool.Utils.AppSettings.Get("ConnectionStrings:RedisConnectionString");
                redisMultiplexer = ConnectionMultiplexer.Connect(RedisConnection);
               Db = redisMultiplexer.GetDatabase();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                redisMultiplexer = null;
                Db = null;
            }
        }
        
		#region String 

        /// <summary>
        /// 保存单个key value
        /// </summary>
        /// <param name="value">保存的值</param>
        /// <param name="expiry">过期时间</param>
        public bool SetStringKey(string key, string value, TimeSpan? expiry = default)
        {
            return Db.StringSet(key, value, expiry);
        }
        
        /// <summary>
        /// 获取单个key的值
        /// </summary>
        public RedisValue GetStringKey(string key)
        {
            return Db.StringGet(key);
        }
        
		/// <summary>
        /// 获取一个key的对象
        /// </summary>
        public T GetStringKey<T>(string key)
        {
            if (Db == null)
            {
                return default;
            }
            var value = Db.StringGet(key);
            if (value.IsNullOrEmpty)
            {
                return default;
            }
            return value.ToString().Json<T>();
        }
        
        /// <summary>
        /// 保存一个对象
        /// </summary>
        /// <param name="obj"></param>
        public bool SetStringKey<T>(string key, T obj, TimeSpan? expiry = default)
        {
            if (Db == null)
            {
                return false;
            }
            string json = obj.ToJson();
            return Db.StringSet(key, json, expiry);
        }

        #endregion

        #region Hash

        /// <summary>
        /// 保存单个key value
        /// </summary>
        /// <param name="hashFields">保存的值</param>
        /// <param name="expiry">过期时间</param>
        public void SetHashKey(string key, HashEntry[] hashFields, TimeSpan? expiry = default)
        {
            Db.HashSet(key, hashFields);
            Db.KeyExpire(key, expiry);
        }

        /// <summary>
        /// 保存单个name key value
        /// </summary>
        /// <param name="value">保存的值</param>
        /// <param name="expiry">过期时间</param>
        public void SetHashKey(string name, string key, RedisValue value, TimeSpan? expiry = default)
        {
            Db.HashSet(name, key, value);
            Expire(name, expiry);
        }

        /// <summary>
        /// 获取单个key的值
        /// </summary>
        public RedisValue GetHashKey(string key, string key1)
        {
            return Db.HashGet(key, key1);
        }

        /// <summary>
        /// 获取单个key的所有键值
        /// </summary>
        public RedisValue[] HashKeys(string key)
        {
            return Db.HashKeys(key);
        }

        /// <summary>
        /// 删除单个key的指定键值
        /// </summary>
        public bool HashDelete(string name, string key)
        {
            return Db.HashDelete(name, key);
        }

        /// <summary>
        /// 删除单个key的所有键值
        /// </summary>
        public long HashClear(string key)
        {
            RedisValue[] redis = HashKeys(key);
            return Db.HashDelete(key, redis);
        }

        #endregion
        
		#region Key Related Operations

        /// <summary>
        /// 设置键值失效时间
        /// </summary>
        /// <param name="key"></param>
        /// <param name="expiry"></param>
        /// <returns></returns>
        public bool Expire(string key, TimeSpan? expiry)
        {
            return Db.KeyExpire(key, expiry);
        }

		/// <summary>
        /// 删除键值
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public bool Delete(string key)
        {
            return Db.KeyDelete(key);
        }

        #endregion
    }

以上是的示例部分没有包含,包括分布式锁,list,等等。


3.链接字符串配置

代码如下(示例):

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "RedisConnectionString": "127.0.0.1,password=123456,DefaultDatabase=0" //这里是默认地址。
  }
}


总结

以上就是今天要讲的内容,本文仅仅简单介绍了 Redis 的使用,而 Redis 提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值