.net core 3.1 如何使用 csredis ?

csredis 看网上评论中说到没有被限制,但是这个东西到底如何使用?没有找到一个可以确认的方式。

使用方式一

注入依赖

 services.AddScoped<Dis.IServices.ICsRedisBase, Dis.Services.CsRedisBase>();

在其他注入依赖的构造函数里面声明一下,然后调用下对应的操作方法 get set 等等,可以对csredis 的方法封装一下

    /// <summary>
    /// 
    /// </summary>
    public class User : Dis.IServices.IUser
    {
        ICsRedisBase _csRedisBase ;
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="cacheService"></param>
        public Configsys(ICsRedisBase csRedisBase)
        {
            _csRedisBase = csRedisBase;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public Entity.User GetList()
        {
            string Hkey = "demo";
            string Key = "SN0001";
            string Str = _csRedisBase.Hget(Hkey,Key);
            if(Str == ""){
                return null;
            }
            Entity.User item = JsonHelper.FromJson<Entity.User>(Str)
            return item ;
        }
    }

问题来了。。。

csredis 的初始化连接在那里打开???

csRedisBase 这个是我封装的一个类,写了一个方法。在 Startup.cs 中的,Configure 中进行初始化数据库连接

每次像上面这样使用,就会打开连接,我一个页面用了6次查询,结果一下刷新多出6个连接 ,崩溃啊,

6 ,12,18 .... 看着都耐受

使用方式2

把csRedisBase 改成静态类,构造函数中初始化数据库连接

public  class CsRedisBase
 {
        /// <summary>
        /// 
        /// </summary>
        protected static CSRedis.CSRedisClient rds;

        static CSRedis.CSRedisClient GetClient()
        {
            return rds;
        }
        /// <summary>
        ///  
        /// </summary>
        static CsRedisBase() {
            rds = new CSRedis.CSRedisClient(Utility.AppConfigHelper.DBValue(new string[] { "RedisCaching", "Server" }));//获取连接字符串);
            RedisHelper.Initialization(rds);
         }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="Key"></param>
        /// <param name="Field"></param>
        /// <returns></returns>
        public static long HDel(string Key, string[] Field) {

            return rds.HDel(Key, Field);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="Key"></param>
        /// <param name="Field"></param>
        /// <returns></returns>
        public static long HDel(string Key, string Field)
        {

            return rds.HDel(Key, Field);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="Key"></param>
        /// <param name="Field"></param>
        /// <returns></returns>
        public static bool HExists(string Key, string Field) {

            return rds.HExists(Key, Field);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="key"></param>
        /// <param name="field"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public static bool HSet(string key, string field, object value)
        {
            return rds.HSet(key, field, value);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="key"></param>
        /// <param name="field"></param>
        /// <returns></returns>
        public static string HGet(string key, string field)
        {
            return rds.HGet(key, field);
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public static Dictionary<string, string> HGetAll(string key)
        {
            return rds.HGetAll(key);
        }

        /// <summary>
        /// 获取哈希表中字段的数量
        /// </summary>
        /// <param name="key">不含prefix前辍</param>
        /// <returns></returns>
        public static long HLen(string key)
        {
            return rds.HLen(key);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public static long Del(string[] key)
        {
            return rds.Del(key);
        }
}

反正是好用了 ,连接不增多了,但是固定6个了, 其实感觉也是有点问题,说不上来,

csredis 打开方式,(我感觉这个是对的)


 public void ConfigureServices(IServiceCollection services){
             var RedisCaching =((ConfigurationSection)Configuration.GetSection("RedisCaching:ConnectionString")).Value;
            // 注册Redis
            var csredis = new CSRedis.CSRedisClient(RedisCaching);
            RedisHelper.Initialization(csredis);
            services.AddSingleton<ICsRedisCache, CsRedisCache>();
}

 

/// <summary>
    /// 
    /// </summary>
    public interface ICsRedisCache
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="Key"></param>
        /// <param name="Field"></param>
        /// <returns></returns>
        long HDel(string Key, string[] Field);
    }

 

 public class CsRedisCache : ICsRedisCache
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="Key"></param>
        /// <param name="Field"></param>
        /// <returns></returns>
        public long HDel(string Key, string[] Field)
        {

            return RedisHelper.HDel(Key, Field);
        }
}

调用RedisHelper中的方法;这次连接数正常了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值