Nancy之Cache的簡單使用

2022-01-20 11:30:03 字數 3476 閱讀 8286

說起快取,或許大家都不陌生,甚至是天天都在用!當然快取也被分的越來越細,頁面快取、資料快取、檔案快取等等。

其實呢,我個人覺得,主要還是兩大類:資料的快取和頁面的快取。資料快取的話就包括所有跟資料扯上關係的都可以

歸到這一類,至於頁面快取的話,就是把一些頁面快取起來,尤其是靜態的頁面,對訪問速度可以說是槓槓的。本文主要

介紹的是資料的快取。當然本文說是這nancy中使用,但是這一塊是通用的,無論你是在mvc、webform、甚至是最新的

asp.net core都是基本一致的。可以選擇的快取型別又有很多,可以用微軟自己的memorycache,可以用牛逼的redis,當然

也可以用分布式快取memcached,如果問要怎麼選的話,那就是視情況而定!

說起資料快取,最直接想到的肯定就是對時間的快取。在某個頁面顯示乙個時間,快取了10秒的話,那這10秒怎麼重新整理都是不換

變化的。這個可以說是理解快取最最最簡單的乙個例子了。下面就來看看demo吧。

先簡單介紹一下memorycache吧,memorycache是位於system.runtime.caching下面的乙個類。

裡面具體的一些屬性和方法可以參見msdn上的介紹

值得一提的是default這個屬性。這個屬性也是我們等下要用到的。memorycache中的實現用了單例模式,更具體的可以參見原始碼

好了,不廢話了,開始正題了。

首先定義乙個icache的介面

1

namespace

nancyfxdemo01.mycache

237 }

這個介面應該沒有什麼好說的,了解過快取的應該都是懂的,不過寫的也不全,像清空快取等方法還是沒有寫,不都都是挺好理解的。

有了介面,肯定會有實現!cache就是基於memorycache實現的。

1

using

system;

2using

system.runtime.caching;

3namespace

nancyfxdemo01.mycache4;

13}14///

15///

新增快取物件

16///

17///

快取key

18///

要快取的物件

19public

void add(string key, object

obj)

2024

///25

///新增有時間限制的快取物件

26///

27///

快取key

28///

要快取的物件

29///

快取時間

30public

void add(string key, object obj, int

seconds)

3134

///35

///判斷指定的key是否已經有快取資料

36///

37///

快取key

38///

true/false

39public

bool exists(string

key)

40

43///

44///

獲取快取的物件

45///

46///

快取物件的型別

47///

快取key

48///

快取的物件

49public t get(string

key)

5053

///54

///移除快取項

55///

56///

快取key

57public

void remove(string

key)

5861

}62 }

前面說過,會用到default這個屬性。我是在建構函式中去賦值的。那些常規的操作就是通過memorycache.default去進行操作的!

下面就是nancy的**了,如果對nancy還有疑問的話,可以去看看我前面介紹nancy的文章。

1

using

system;

2using

nancy;

3using

nancyfxdemo01.mycache;

4namespace

nancyfxdemo01519

return cache.get("

time");

20};21}

22}23 }

效果圖:

可以看到,這個時間被快取了10秒,十秒之後才會發生變化。

redis可以說是神器啊,它的效能確實比memcached要好一些。

要用redis,肯定要先裝乙個redis,這個是必不可少的,本人裝的是windows版,具體如下:

當然,這只是個大前提,要想去操作redis還得用工具的,這個時候我們可以通過nuget去安裝

stackexchange.redis 或者是 servicestack.redis ,相信這兩個是大家用的最多的。

示例用的是stackexchange.redis這個包。 

1

using

system;

2using

nancy;

3using

stackexchange.redis;

4namespace

nancyfxdemo01520

21return db.stringget("

time

").tostring() ;

22};23}

24}25 }

這個是在nancy中使用redis的**,這裡的話就沒對reids的操作進行封裝,是直接在方法裡面進行了操作。

下面是效果圖

可以看到效果已經出來了!!!

至於memcached的話,就不在做demo演示了。 

本文這兩個例子比較簡單,但是應該是通俗易懂的。不過篇幅基本都在介紹快取,只是在nancy中使用到了

這些知識而已。快取說複雜的話,它並不那麼複雜,無非就是讀和寫。但是說簡單,它也並不簡單,用的時機以及怎麼用

對乙個**會帶來很重要的影響。

後面有時間的話會用nancy和redis做乙個複雜一點的例子。 

使CPU執行的更快 Cache

使cpu執行的更快 cache 高速緩衝儲存器cache是位於cpu與記憶體之間的臨時的儲存器,它的容量比記憶體小但是交換速度快。在cache中的資料是記憶體中的一小部分,但是這一小部分是cpu可以高速的訪問的。1 源 2.設定時鐘 ldr r0,0x4c000014 mov r1,0x03 fcl...

springboot中Cache快取的使用

org.springframework.boot spring boot starter cache enablecaching public static void main string args cacheable 根據方法請求引數對其結果進行快取 查詢 自定義配置類配置keygenerato...

spring使用 Cache的簡單實現

基於xml的配置感覺沒有註解形式簡單明瞭,咱不考慮了。進入正題之前先提個疑問,希望知道的人能告訴一下 下述介紹會有這段 cacheable value mycache key get userno public string get string userno 將查詢到的資料快取到mycache中,...