快取與資料庫的結合使用

2021-09-17 22:32:52 字數 2020 閱讀 3970

場景:很多時候,我們希望避開資料庫,更多的使用快取來代替直接從資料庫的讀取,以此來提供程式的效能。為此,我們進行了一些比較常見的封裝

例如:什麼配置資訊,常見的活動配置、基礎配置、系統配置、營銷配置等

/// /// 配置相關的快取服務基類

///

///

public abstract class baseconfigcacheservicewhere t : itablebase, new()

}else

return list;

}/// /// 通過資料庫獲取list

///

protected abstract listgetlistfordb();

/// /// 獲取list

///

/// 條件

///

public listgetlist(predicatematch)

return null;

}/// /// 獲取實體

///

/// 條件

public t getmodel(predicatematch)

return default(t);

}/// /// 更新配置

///

public void update()

/// /// 獲取cachekey

///

///

public string getcachekey()

_";}

}

public class coursesconfigcacheservice : baseconfigcacheservice,

new coursesconfigentity

};return list;

}}

呼叫端使用:

//讀取配置資訊

/// /// 記錄相關的快取服務基類

///

///

public abstract class baserecordcacheservicewhere t : itablebase, new()

}else

return list;

}/// /// 通過資料庫獲取list

///

/// id

protected abstract listgetlistfordb(long id);

/// /// 條件獲取列表

///

///

/// 匹配條件

///

public listgetlist(long id, predicatematch)

return null;

}/// /// 獲取實體

///

///

/// 匹配條件

///

public t getmodel(long id, predicatematch)

return default(t);

}/// /// 更新記錄

///

/// 使用者id

public void update(long id)

/// /// 獲取cachekey

///

///

///

public string getcachekey(long id)

_";}

}

public class studentcoursesreocrdcacheservice : baserecordcacheservice,

new studentcoursesreocrdentity,};

return list;

}}

呼叫端**:

//讀取記錄資訊

:   0xwx

資料庫 快取雪崩與快取穿透

首先,我們為什麼要使用redis呢?那麼,如果快取掛了,就意味著我們全部的請求都跑去資料庫了。redis不可能把所有的資料都快取起來 記憶體有限 所有redis需要對資料設定過期時間,並採用惰性刪除 定期刪除兩種策略對過期鍵進行刪除。如果快取資料設定的過期時間是相同的,並且恰好redis將這部分資料...

資料庫游標結合臨時表的使用

一 建立臨時表定義相關的變數 create table temptable 建立臨時表 maintradecode int,subtradecode int,subtradename varchar 50 declare keyword varchar 200 declare searchcount...

資料庫快取

用資料庫 將要儲存的nsarray 或 nsdictionary 物件 轉為nsdata型別。再將nsdata存到資料庫的blob中。若將nsarray直接存到資料庫 那麼資料庫中儲存的是 nsstring型別的資料而不是nsarray物件本身,因此要轉為nsdata型別。方法如下 將oc物件轉為n...