4 回答

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個(gè)贊
解決問(wèn)題的思路首先就不對(duì),什么叫JAVA中……JVM虛擬內(nèi)存一般只有幾百M(fèi),為何別人那么多大型系統(tǒng)都能跑起來(lái)?
第一,大量的數(shù)據(jù)是不會(huì)考慮放在JVM內(nèi)存中;
第二,如果需要緩存大量的dto,動(dòng)態(tài)數(shù)據(jù)(又稱過(guò)程數(shù)據(jù))一般用的是redis;如果是靜態(tài),系統(tǒng)啟動(dòng)時(shí)就加載的大量配置,一般考慮放ehcache。
第三,由于redis用的是物理內(nèi)存,不是JVM內(nèi)存,一般情況下往redis里丟千萬(wàn)級(jí)別的記錄數(shù)基本不影響性能,小小100w條算什么呢。

TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊
內(nèi)存數(shù)據(jù)庫(kù)有現(xiàn)成的redis,高效存取鍵值對(duì),鍵設(shè)為你的查詢條件,值設(shè)為你的查詢結(jié)果轉(zhuǎn)為字符串
查詢時(shí)先從redis取,沒(méi)有再查數(shù)據(jù)庫(kù),并且設(shè)置redis的過(guò)期時(shí)間,這種方式需要項(xiàng)目對(duì)實(shí)時(shí)性要求不高,這樣你才能用緩存,而且如果你的項(xiàng)目沒(méi)有明顯的熱點(diǎn),即沒(méi)有某些內(nèi)容確定會(huì)多次被查到,那你緩存就不會(huì)命中,添加緩存反而影響你得速度
redis是一種nosql的內(nèi)存數(shù)據(jù)庫(kù),感興趣你可以了解一下,優(yōu)點(diǎn)就是性能強(qiáng)勁
數(shù)據(jù)查詢請(qǐng)求多就把結(jié)果緩存下來(lái),你查數(shù)據(jù)庫(kù)再快也沒(méi)有直接把結(jié)果從內(nèi)存讀出來(lái)快
同樣的sql請(qǐng)求只有第一次查數(shù)據(jù)庫(kù),之后通通讀內(nèi)存
或者你干脆借助這種思想,創(chuàng)建一個(gè)全局的map對(duì)象,然后查詢條件作key
,結(jié)果作value,就省去了了解redis的過(guò)程,把整個(gè)數(shù)據(jù)庫(kù)裝內(nèi)存不太科學(xué),你有多少條數(shù)據(jù)啊

TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個(gè)贊
在applicationContext.xml里設(shè)置數(shù)據(jù)源
<!-- 數(shù)據(jù)源定義,使用Apache DBCP 連接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
寫(xiě)入具體值就可以了
applicationContext.xml中還有一段相關(guān)的:
<!-- 初始化ibatis配置信息sqlMapClient -->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="classpath:cn/com/pp/db/SqlMapConfig.xml" />
<property name="dataSource" ref="dataSource" />
</bean>

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊
map由key value鍵值對(duì)組成,具體放多少數(shù)據(jù)和你的服務(wù)器運(yùn)行時(shí)的內(nèi)存有關(guān)系,同時(shí)也和你代碼中及時(shí)清理無(wú)效緩存有關(guān)系。
一般編寫(xiě)代碼中不會(huì)去考慮放多少數(shù)據(jù)問(wèn)題,除非你數(shù)據(jù)量超級(jí)大對(duì)內(nèi)存要求比較高。這個(gè)時(shí)候需要對(duì)代碼和服務(wù)器進(jìn)行優(yōu)化
添加回答
舉報(bào)