本文目錄一覽:
java怎樣將數據保存到緩存中,之後再保存
Java中可以使用隊列來保存數據,當使用的時候,加上鎖,防止其他進程訪問,當不用的時候保存到數據庫裏面,示例如下:
package com.henry;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
public class CacheDataTest {
static MapInteger,Object dataMap=new HashMapInteger,Object();
static ReadWriteLock lock=new ReentrantReadWriteLock();//創建讀寫鎖的實例
static Object getData(Integer key){
lock.readLock().lock();//讀取前先上鎖
Object val=null;
try{
val=dataMap.get(key);
if(val == null){
// Must release read lock before acquiring write lock
lock.readLock().unlock();
lock.writeLock().lock();
try{
//可能已經由其他線程寫入數據
if(val==null){
//dataMap.put(key, “”);//query from db
val=queryDataFromDB(key);
}
}finally{
//Downgrade by acquiring read lock before releasing write lock
lock.readLock().lock();
// Unlock write, still hold read
lock.writeLock().unlock();
}
}
}finally{
lock.readLock().unlock();//最後一定不要忘記釋放鎖
}
System.out.println(“get data key=”+key+”val=”+val);
return val;
}
static Object queryDataFromDB(Integer key){
Object val=new Random().nextInt(1000);
dataMap.put(key, val);
System.out.println(“write into data key=”+key+”val=”+val);
return val;
}
public static void main(String[] args) {
for(int i=0;i10;i++){
new Thread(new Runnable(){public void run() {
getData(new Random().nextInt(5));
}}).start();
}
}
}
哪位了解java數據緩存技術有哪些
一、什麼是緩存
1、Cache是高速緩衝存儲器 一種特殊的存儲器子系統,其中複製了頻繁使用的數據以利於快速訪問
2、凡是位於速度相差較大的兩種硬件/軟件之間的,用於協調兩者數據傳輸速度差異的結構,均可稱之為 Cache
常見的緩存技術有哪些?
一、操作系統緩存
1、文件系統提供的Disk Cache:操作系統會把經常訪問到的文件內容放入到內存當中,由文件系統來管理
2、當應用程序通過文件系統訪問磁盤文件的時候,操作系統從Disk Cache當中讀取文件內容,加速了文件讀取速度
3、Disk Cache由操作系統來自動管理,一般不用人工干預,但應當保證物理內存充足,以便於操作系統可以使用盡量多的內存充當Disk Cache,加速文件讀取速度
4、特殊的應用程序對文件系統Disk Cache有很高的要求,會繞開文件系統Disk Cache,直接訪問磁盤分區,自己實現Disk
5、Cache策略
Oracle的raw device(裸設備) – 直接拋棄文件系統
MySQL的InnoDB: innodb_flush_method = O_DIRECT
二、數據庫緩存
緩存策略:a、Query Cache; b、Data Buffer
三、應用程序緩存
包括對象緩存、查詢緩存、頁面緩存
四、web服務器端緩存
基於代理服務器模式的Web服務器端緩存,如squid/nginx
Web服務器緩存技術被用來實現CDN(內容分髮網絡 content delivery network)
被國內主流門戶網站大量採用
不需要編程,但僅限於新聞發佈類網站,頁面實時性要求不高
五、基於ajax的瀏覽器緩存
使用AJAX調用的時候,將數據庫在瀏覽器端緩存
只要不離開當前頁面,不刷新當前頁面,就可以直接讀取緩存數據
只適用於使用AJAX技術的頁面
請教java中怎麼緩存大量的數據,比如100w條記錄
小子,解決問題的思路首先就不對,什麼叫JAVA中……JVM虛擬內存一般只有幾百M,為何別人那麼多大型系統都能跑起來?
第一,大量的數據是不會考慮放在JVM內存中;
第二,如果需要緩存大量的dto,動態數據(又稱過程數據)一般用的是redis;如果是靜態,系統啟動時就加載的大量配置,一般考慮放ehcache。
第三,由於redis用的是物理內存,不是JVM內存,一般情況下往redis里丟千萬級別的記錄數基本不影響性能,小小100w條算什麼呢。
java怎麼將數據放入緩存
java放入session緩存中
方法如下:
session.setAttribute(“Name”,Value);
Name 隨便取,value就是要放的數據
獲取的時候session.getAttribute(“Name);
就可以了
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/183294.html