ネットコアWebApi--キャッシュアーティファクトのRedis

@

序文

中秋節は、ほぼ2週間のこのプロジェクトを移動していない無意識のうちに終了し、最近発生した問題の多くを行うの途中で、最終的に戻ってビジネスニーズにクラウドサービス、そして決定的に直接ネットコアハァッを従事し始めていたが、このフォローアップは少しになります記載されている埋めるための穴を掘る前に最初のソリューション、今日が含まれます。

Redisの

私は前に述べたキャッシュに読み込む事は、クッキーセッションキャッシュ、いくつかの異なる方法でキャッシュは、クッキーはクライアントブラウザの存在で、セッションはキャッシュサーバがあるとして、基本的にクライアントのストレージですが、それが分散される場合これは、他の2つは少し問題を抱えているクッキーに加えて、いくつかの方法であってもよいし、結局のところ、サービスの店は、単一の、マルチサービスの相互作用そのものであれば、複数の、そして必要が関与し、例えば、サービスが行われ、キャッシュメモリ、他のサービスは、内部信号またはHTTP要求を送信する必要がある他のサービス要求に従って対応する動作を行います。

もちろん、これは使用されませんRedisのを前提の下で、Redisのは、分散キャッシュを解決するためのアーティファクト、データ処理を読み書きするために自分自身を捧げサーバーと同等のは、彼自身のビジネスについては、データ・サーバ(個人的な感情...)として理解することができていますそれだけで(矛盾しないように、もちろん、Redisの各サービスを設定)のRedisの読み取り操作と書き込みを直接呼び出すことができ、データ・キャッシュを使用する必要があり、実行するビジネスニーズに配布します。

上のRedisのインストールと設定Linux構成の展開_(d)の初心者- Redisのインストールと構成は、それはRedisのを使用して、少し基礎を行うことです、と言われてきました。

使用

まず第一に、限り、ライブラリはNugetパッケージを導入しなければならないとして、我々はApril.Util導入Microsoft.Extensions.Caching.Redisは、当然のことながら、他のあるStackExchange.RedisCSRedisCore、関係者はまず、ここでそれを試してみてください公式の拡張パックアドレスを

導入が完了した後、我々は、構成ディレクトリappsettings.jsonに対処しなければなりません。
コンフィギュレーション
その後、我々はすべての後に、すべてのサードパーティコールを見た後、自分のニーズに応じて、それを包み、Redisの方法を見てください。
Redisの

コンフィギュレーション情報を当初最初で、その後、エンティティオブジェクトを作成し、ここで説明するメソッドを呼び出し、デフォルト値はもちろん、公式の拡張メソッドがあり、[]バイトの値です。
Redisの
まあ、仕方の後に我々はそれUtil(使用率)を開始します。

RedisUtil

まず第一に、我々はまだ最初の設定情報を行う必要があり、構成情報は、既にのAppSettingsに書き込まれている、ここで直接AprilConfigは中に追加しました。

private static string _IsOpenCache = string.Empty;
        /// <summary>
        /// 是否使用Redis
        /// </summary>
        public static bool IsOpenCache
        {
            get
            {
                if (string.IsNullOrEmpty(_IsOpenCache))
                {
                    _IsOpenCache = Configuration["Redis:IsOpenRedis"];
                }
                if (_IsOpenCache.ToLower() == "true")
                {
                    return true;
                }
                return false;
            }
        }

        private static string _RedisConnectionString = string.Empty;
        /// <summary>
        /// Redis默认连接串
        /// </summary>
        public static string RedisConnectionString
        {
            get
            {
                if (string.IsNullOrEmpty(_RedisConnectionString))
                {
                    _RedisConnectionString = Configuration["Redis:ConnectionString"];
                }
                return _RedisConnectionString;
            }
        }

構成情報の設定が完了した後、Redisのの初期化メソッドを起動します。

        private static RedisCache _redisCache = null;
        private static RedisCacheOptions options = null;
        /// <summary>
        /// 初始化Redis
        /// </summary>
        public static void InitRedis()
        {
            if (AprilConfig.IsOpenCache)
            {
                _redisCache = new RedisCache(GetOptions());
            }
        }
        /// <summary>
        /// 获取配置项信息
        /// </summary>
        /// <returns></returns>
        protected static RedisCacheOptions GetOptions()
        {
            options = new RedisCacheOptions();
            options.Configuration = AprilConfig.RedisConnectionString;
            options.InstanceName = "April.Redis";
            return options;
        }
        /// <summary>
        /// 添加数据
        /// </summary>
        /// <param name="key">键</param>
        /// <param name="value">值</param>
        /// <param name="ExprireTime">过期时间</param>
        public static void Add(string key, object value, int ExprireTime = 10)
        {
            if (string.IsNullOrEmpty(key))
            {
                return;
            }
            string strValue = string.Empty;
            try
            {
                strValue = JsonConvert.SerializeObject(value);
            }
            catch (Exception ex)
            {
                LogUtil.Error($"Redis.Add转换失败:{ex.Message}");
            }
            if (!string.IsNullOrEmpty(strValue))
            {
                _redisCache.SetString(key, strValue, new Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions()
                {
                    AbsoluteExpiration = DateTime.Now.AddMinutes(ExprireTime)
                });
            }
        }
        /// <summary>
        /// 获取数据(对象)
        /// </summary>
        /// <typeparam name="T">对象类型</typeparam>
        /// <param name="key">键</param>
        /// <returns></returns>
        public static T Get<T>(string key)
        {
            string value = Get(key);
            if (string.IsNullOrEmpty(value))
            {
                return default(T);
            }
            T obj = default(T);
            try
            {
                obj = JsonConvert.DeserializeObject<T>(value);
            }
            catch (Exception ex)
            {
                LogUtil.Error($"Redis.Get转换失败:{ex.Message},数据:{value}");
            }
            return obj;
        }
        /// <summary>
        /// 移除数据
        /// </summary>
        /// <param name="key">键</param>
        public static void Remove(string key)
        {
            if (!string.IsNullOrEmpty(key))
            {
                _redisCache.Remove(key);
            }
        }
        /// <summary>
        /// 重置数据
        /// </summary>
        /// <param name="key">键</param>
        /// <param name="value">值</param>
        /// <param name="expireTime">过期时间</param>
        public static void Replace(string key, object value, int expireTime = 10)
        {
            if (!string.IsNullOrEmpty(key))
            {
                Remove(key);
                Add(key, value, expireTime);
            }
        }

あまりここで使用される特定の方法は、参照コードのアドレスを書き込むためのネットコアWEBAPIリストを、私があれば(あなたが彼のソースコードに行かなければならない、パッケージ化の方法を見て、より多くのコードに取り付けた感じ、彼はコピー&ペーストして慣れていますそれでも)場合、そのような方法の使用だけでなく、彼らのビジネスがパッケージを必要とするが、結局、言葉で良い助けになります使用する最初のステップである、第2のステップは、パッケージを変更することであろうことは第三のステップである、それは自分自身を書くこと、です最終段階(語句純粋にお互いを奨励されています)。

テスト

まあ、フィニッシュ後、事の彼らの並べ替えは、最終的に使用することはできませんしたくない、再びそれをテストするために使用される、単調さがひどいではない、最終結果を知られていないひどいです。
新しいです
テスト
結果

得ます
テスト
結果

カバー
PSを: - 、 -実際には、削除して追加し、カバーしていると言わ|||
テスト
結果

削除
テスト
結果

概要

私は単にRedisの使用を示し、またはフォローアップがランダム切り替えた場合、他の問題を持っていない、ので、Redisの保存後、このような非常に多くのデータベースとして、更新していきます、基本的には以上のあなたに書き込むと、その知識を適用します牙は、間違ったの間違いを認め、ライン上で、変更を変更することができます

おすすめ

転載: www.cnblogs.com/AprilBlank/p/11571365.html