10 回答

TA貢獻(xiàn)1802條經(jīng)驗 獲得超10個贊
- 估算數(shù)據(jù)量,及數(shù)據(jù)增長趨勢,如果內(nèi)存能夠承受,可以用Map,我試過往Map里放500M的數(shù)據(jù),可以承受的
- 如果用redis,考慮網(wǎng)絡(luò)IO的延遲
- 不要過早優(yōu)化,如果目前內(nèi)存夠用,沒必要上第三方緩存,開發(fā)的時候采用接口編程,如果以后換了再換實現(xiàn)就行了

TA貢獻(xiàn)1827條經(jīng)驗 獲得超4個贊
1.Redis是用C語言開發(fā)的一個開源的高性能鍵值對(key-value)數(shù)據(jù)庫,redis 的性能當(dāng)然比自建緩沖的性能好,畢竟 redis 是經(jīng)過大量實踐和改進(jìn)的,如果項目不上線,另說,你可以嘗試下
2.緩存(數(shù)據(jù)查詢、短連接、新聞內(nèi)容、商品內(nèi)容等等)。(最多使用)

TA貢獻(xiàn)1906條經(jīng)驗 獲得超10個贊
1.建議使用redis,這樣可以降低耦合度,
2.另個redis的緩存處理機(jī)制是經(jīng)過很多成熟產(chǎn)品檢驗的,其處理的速率及性能都遠(yuǎn)遠(yuǎn)超過自建。

TA貢獻(xiàn)1776條經(jīng)驗 獲得超12個贊
如果只考慮性能,自建緩存必然比redis高效。
因為你是單應(yīng)用,如果內(nèi)存足夠的話自建的內(nèi)存緩存(例如concurrenthashmap )完全可以滿足需求
也可以使用第三方緩存類,例如Google Guava 緩存類(不用你自己寫定時器去清除緩存)。
//Google Guava緩存的例子
Cache<String, String> cache = CacheBuilder.newBuilder()//
.expireAfterAccess(1000, TimeUnit.MILLISECONDS)//
.build();
cache.put("key1", "value");
String value = cache.getIfPresent("key1");

TA貢獻(xiàn)1795條經(jīng)驗 獲得超7個贊
要是數(shù)據(jù)量小的話,可以直接使用同步集合(避免數(shù)據(jù)不一致),因為程序級的內(nèi)存使用肯定要比通過網(wǎng)絡(luò)請求的緩存效率高。但是問題是你的程序重啟時,你每次都要重新加載數(shù)據(jù)到內(nèi)存中,還要自己寫定時任務(wù)修改數(shù)據(jù),對于自己隨便寫的程序,可以這樣做,如果是商業(yè)程序,不建議這么做。
redis在商業(yè)程序或者數(shù)據(jù)量比較大的時候需要用的。
添加回答
舉報