首页 > 编程知识 正文

java怎样缓存相关云计算内容,java缓存数据

时间:2023-12-25 12:47:11 阅读:322210 作者:PEEL

本文目录一览:

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);

就可以了

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。