StackExchange.Redis 之 String 類型示例

来源:https://www.cnblogs.com/peterzhang123/archive/2020/02/17/12322515.html
-Advertisement-
Play Games

String類型很簡單,就不做示例演示了,這裡只貼出Helper類 /// <summary> /// 判斷key是否存在 /// </summary> /// <param name="key"></param> /// <param name="db"></param> /// <returns ...


String類型很簡單,就不做示例演示了,這裡只貼出Helper類

        /// <summary>
        /// 判斷key是否存在
        /// </summary>
        /// <param name="key"></param>
        /// <param name="db"></param>
        /// <returns></returns>
        public bool KeyExists(string key, int db = -1)
        {
            try
            {
                _db = GetDatabase(db);
                return KeyExists(key);
            }
            catch (Exception)
            {
                throw;
            }
        }

        /// <summary>
        /// 根據key 移除緩存  
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public bool Remove(string key, int db = -1)
        {
            try
            {
                if ((object)key == null)
                    return false;
                _db = GetDatabase(db);
                return KeyDelete(key);
            }
            catch (Exception ex)
            {
                _log.Fatal("移除:{0}異常:{1}", key, ex.Message);
                throw;
            }
        }


        /// <summary>
        /// 寫入緩存數據
        /// </summary>
        /// <typeparam name="T">類型</typeparam>
        /// <param name="key"></param>
        /// <param name="value"></param>
        /// <param name="span">有效期</param>
        /// <returns></returns>
        public bool Set<T>(string key, T value, TimeSpan span, int db = -1)
        {
            try
            {
                if ((object)key == null || value == null)
                    return false;

                _db = GetDatabase(db);
                if (value != null && (object)value is string)
                {
                    return StringSet(key, value.ToString(), span);
                }
                return StringSet<T>(key, value, span);
            }
            catch (Exception ex)
            {
                _log.Fatal("{0}key寫入value:{1}失敗,異常原因:{2}", key, value, ex.Message);
                throw;
            }
        }

        /// <summary>
        /// 讀取緩存數據  返回實體
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key"></param>
        /// <returns></returns>
        public T Get<T>(string key, int db = -1)
        {
            try
            {
                _db = GetDatabase(db);
                return StringGet<T>(key);
            }
            catch (Exception)
            {
                throw;
            }
        }

        /// <summary>
        /// 讀取緩存數據 返回字元串
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public string Get(string key, int db = -1)
        {
            try
            {
                _db = GetDatabase(db);
                return StringGet(key);
            }
            catch (Exception)
            {

                throw;
            }
        }

        /// <summary>
        /// 遞增
        /// </summary>
        /// <param name="key"></param>
        /// <param name="span"></param>
        /// <param name="db"></param>
        /// <returns></returns>
        public long Increment(string key, TimeSpan span, int db = -1)
        {
            try
            {
                _db = GetDatabase(db);
                var result = this.StringIncr(key);
                //設置過期時間
                this.KeyExpire(key, span);
                return result;
            }
            catch (Exception)
            {

                throw;
            }
        }

        /// <summary>
        /// 遞減
        /// </summary>
        /// <param name="key"></param>
        /// <param name="span"></param>
        /// <param name="db"></param>
        /// <returns></returns>
        public long Decrement(string key, TimeSpan span, int db = -1)
        {
            try
            {
                _db = GetDatabase(db);
                var result = this.StringDecr(key);
                //設置過期時間
                this.KeyExpire(key, span);
                return result;
            }
            catch (Exception)
            {

                throw;
            }
        }

 


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

-Advertisement-
Play Games
更多相關文章
  • 題目:將 0001 題生成的 200 個激活碼(或者優惠券)保存到 Redis 非關係型資料庫中。 代碼: ...
  • python數據擬合主要可採用numpy庫,庫的安裝可直接用pip install numpy等。 1. 原始數據:假如要擬合的數據yyy來自sin函數,np.sin import numpy as np import matplotlib.pyplot as plt xxx = np.arange ...
  • 前言 也許,有的人看到上邊這個標題,首先會覺得這肯定是一篇廣告文吧。確實,我們可能見過有很多號主用類似於“你的同齡人已經XXX了,而你還在XXX”這種風格,來寫軟文。 但是,我可以明確的告訴你,這篇文章不是廣告,只是記錄我的一些感想而已。再說了,也沒有廣告主來找我合作呀(手動捂臉)。 正文 今天,無 ...
  • 值傳遞與對象拷貝 值傳遞和引用傳遞 調用一個有參函數的時候,會把實際參數傳遞給形式參數。但是,在程式語言中,這個傳遞過程中傳遞的兩種情況,即值傳遞和引用傳遞 兩者區別 1. 值傳遞(pass by value)是指在調用函數時將實際參數複製一份傳遞到函數中,這樣在函數中如果對參數進行修改,將不會影響 ...
  • 目標網站:古詩文網 登錄界面顯示: 打開控制台工具,輸入賬號密碼,在ALL欄目中進行抓包 數據如下: 登錄請求的url和請求方式 登錄所需參數 參數分析: __VIEWSTATE和__VIEWSTATEGENERATOR可以在登錄界面獲取,code為驗證碼,email為賬號,pwd為密碼,from為 ...
  • 一. insert 首先看一下 insert.java 的代碼: /** * <p> * 根據 ID 刪除 * </p> * * @author hubin * @since 2018-04-06 */ public class Insert extends AbstractMethod { @Ov ...
  • 以控台的形式,運行.net core mvc 代碼, Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>();//指定網路主機要使用的啟動類型 ...
  • 通過上一章的學習,Geometry抽象類表示形狀或路徑。Drawing抽象類扮演了互補的角色,它表示2D圖畫(Drawing)——換句話說,它包含了顯示矢量圖像或點陣圖需要的所有信息。 儘管有幾類畫圖類,但只有GeometryDrawing類能使用已經學習過的幾何圖形。它增加了決定如何繪製圖形的畫筆和 ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...