4 回答

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

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

TA貢獻1873條經驗 獲得超9個贊
在applicationContext.xml里設置數據源
<!-- 數據源定義,使用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>
寫入具體值就可以了
applicationContext.xml中還有一段相關的:
<!-- 初始化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貢獻1836條經驗 獲得超4個贊
map由key value鍵值對組成,具體放多少數據和你的服務器運行時的內存有關系,同時也和你代碼中及時清理無效緩存有關系。
一般編寫代碼中不會去考慮放多少數據問題,除非你數據量超級大對內存要求比較高。這個時候需要對代碼和服務器進行優化
添加回答
舉報