StackExchange.Redis幫助類解決方案RedisRepository封裝(基礎配置)

来源:http://www.cnblogs.com/tdws/archive/2016/08/28/5815735.html
-Advertisement-
Play Games

關鍵字RedisHelper,StackExchange.Redis,Redis幫助類 ...


本文版權歸博客園和作者吳雙本人共同所有,轉載和爬蟲,請註明原文地址。http://www.cnblogs.com/tdws/p/5815735.html

寫在前面

這不是教程,分享而已,也歡迎園友們多提建議和指正。關於更多詳細介紹,請到github上看Docs,下麵附上地址。

關於Redis基礎控制它台操作有疑問的,歡迎閱讀本人Redis系列命令拾遺分享  http://www.cnblogs.com/tdws/tag/NoSql/

如今StackService.Redis已經轉向商業版本。4.0以下的低版本依然免費和開源,低版本的不更新了,有沒有bug誰知道呢?

但是我們依然有一個非常棒的選擇,StackExchange.Redis。我給你一個使用它的理由,StackOverflow在使用它,我想其他的不說,這個理由足夠了。

我要做的事情是什麼,我為什麼要做這件事情呢?

相信在平時工作中,我們使用redis大多是調用SOA介面,架構師或者緩存中心封裝出dll給我們使用,然後你看不到源碼,這很不爽啊!首先我把寫博客當成另一種事業,所以我要做的就是分享封裝Redis幫助類的方法以及過程,希望能幫助到自己和熱愛技術的朋友們。

StackExchange在github上文檔的地址:https://github.com/StackExchange/StackExchange.Redis/tree/master/Docs

目錄

本系列會包括如下內容,打算15天內更完,15天速度正好,我也加強了,相信大家也掌握了:

一、基礎配置封裝

二、String字元串類型數據操作封裝

三、Hash散列類型數據操作封裝

四、List列表類型數據操作封裝

五、Set集合類型數據操作封裝

六、Sort Set集合數據類型操作封裝

七、主從配置,哨兵相關配置

一、基礎配置封裝

 首先我們要從nuget中引用StackExchange.Redis到解決方案中的項目。

項目目錄結構如下:

首先給大家看下RedisClientConfiguration.cs的代碼。在這裡我們定義了Redis鏈接地址,關於Get方法我們接下來再看。還定義了Port埠,鏈接超時時間,重試次數,Redis預設使用的資料庫0-15,十六個。PreserveAsyncOrder用於配置非同步操作是否應以保證其原始交付順序的方式調用。

using RedisRepository.Helpers;

namespace RedisRepository
{
    public static class RedisClientConfigurations
    {
        private static string _url = ConfigurationHelper.Get("RedisServer", "127.0.0.1");
        public static string Url
        {
            get { return _url; }
            set { _url = value; }
        }

        private static int _port = 6379;
        public static int Port
        {
            get { return _port; }
            set { _port = value; }
        }

        private static int _connectTimeout = 10000;
        public static int ConnectTimeout
        {
            get { return _connectTimeout; }
            set { _connectTimeout = value; }
        }

        private static int _connectRetry = 3;
        public static int ConnectRetry
        {
            get { return _connectRetry; }
            set { _connectRetry = value; }
        }

        private static int _defaultDatabase = ConfigurationHelper.Get("RedisDataBase", 0);
        public static int DefaultDatabase
        {
            get { return _defaultDatabase; }
            set { _defaultDatabase = value; }
        }

        private static bool _preserveAsyncOrder = false;
        public static bool PreserveAsyncOrder
        {
            get { return _preserveAsyncOrder; }
            set { _preserveAsyncOrder = value; }
        }
    }
}

下麵介紹ConfigurationHelper.cs中的Get方法。這就是獲取我們WebConfig配置文件中Redis地址設置,並且必須指定預設地址。

using System;
using System.Configuration;

namespace RedisRepository.Helpers
{
    public static class ConfigurationHelper
    {
        internal static T Get<T>(string appSettingsKey, T defaultValue)
        {
            string text = ConfigurationManager.AppSettings[appSettingsKey];
            if (string.IsNullOrWhiteSpace(text))
                return defaultValue;
            try
            {
                var value = Convert.ChangeType(text, typeof(T));
                return (T)value;
            }
            catch
            {
                return defaultValue;
            }
        }
    }
}

另外就到了我們的關鍵部分,定義Redis操作類介面IRedisClient.cs以及其實現類RedisClient.cs。介面將來暴露給外部調用者。

#region 程式集 RedisRepository, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
// Author:吳雙 2016.8.28  聯繫郵箱[email protected]
#endregion
using System;
using System.Collections.Generic;
using StackExchange.Redis;

namespace RedisRepository
{
    public interface IRedisClient
    {

    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
using StackExchange.Redis;

namespace RedisRepository
{
    public class RedisClient : IRedisClient
    {
          

        #region 私有公用方法   在其中我們序列化操作使用Newtonsoft.Json組件

        private string SerializeContent(object value)
        {
            return JsonConvert.SerializeObject(value);
        }

        private T DeserializeContent<T>(RedisValue myString)
        {
            return JsonConvert.DeserializeObject<T>(myString);
        }

        #endregion
    }
}

 

接下來的幾篇分享,我將持續加入相關操作方法。如果我的點滴分享,對您能有一點幫助,歡迎點贊支持。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 目錄: 1. 樹莓派Odroid等卡片式電腦上搭建NAS教程系列1-Ubuntu系統安裝 2. 樹莓派Odroid等卡片式電腦上搭建NAS教程系列2-SSH連接訪問 3. 樹莓派Odroid等卡片式電腦上搭建NAS教程系列3-掛載HDD硬碟+節電設置 4. 樹莓派Odroid等卡片式電腦上搭建NAS ...
  • 原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章、作者信息和本聲明。否則將追究法律責任。 最近使用busybox為基於ARM的板卡定製了一個極簡單的根文件系統,由於busybox僅支持telnet而不支持ssh,本文將詳細描述如何交叉編譯dropbear並將其移植到目標板卡上使能dropbear ...
  • 以往做nuget包我們一般要麼用命令行,要麼用nuget的圖形化界面去做,但是一些操作比較麻煩.比如引入命名空間,引入第三方nuget包。這些在.NET Core項目里卻很簡單,只需要使用命令行dotnet pack,在.NET Core系列 : 1、.NET Core 環境搭建和命令行CLI入門 ...
  • 域服務數據讀寫,有倆種模式 1、輕量級的數據讀取 2、DectoryEntry 可以獲取整個伺服器的數據,也可以修改其中的信息 參考類似文章: http://www.it165.net/pro/html/201308/6829.html ...
  • 1、提示框 分為提示、異常、失敗、成功幾種類型 方法: /// <summary> /// 彈出提示 /// 標題:提示 /// </summary> /// <param name="strContent">內容</param> public static void ShowInfoMessage ...
  • 程式生成的自定義文件,比如尾碼是.test 這種文件怎麼直接啟動打開程式,並打開本文件呢 1、雙擊打開 2、自定義的文件,有圖標顯示 3、自定義的文件,點擊右鍵有相應的屬性 後臺代碼:(如何在註冊表中修改信息) 在修改了註冊表信息後,雙擊文件是啟動了軟體,之後怎麼在代碼中操作? 然後可以在主程式lo ...
  • 上周遇到了一個非常詭異的坑,首先寫了兩個程式,第一個程式輸出成dll,第二個程式是控制台程式。 在第一個程式里,我使用了process去啟動第二個程式,同時傳入了一個Json作為參數,即: Process.Start(program2.exe, Jsonpara); 這個Jsonpara是將一個Li ...
  • 開發完成後,我們可以直接在Debug目錄下啟動exe,運行程式。 但是,要如何安裝,添加到開始菜單、桌面快捷方式、任務欄等。如Office安裝效果: 開始菜單: 快捷菜單: 打包步驟: 1、下載InstallShield安裝程式 官網下載地址:http://learn.flexerasoftware ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...