
java找不到高速缓存条目可以将这些数据缓存在存储器中。java找不到高速缓存条目,可以每次 *** 作时先在存储器中查找缓存数据,可以直接使用或者将其获取并放入缓存再使用。java是一门面向对象的编程语言。
方法有很多 其中之一
实时获取mysql binlog进行解析 然后修改redis
MySQL到Redis数据方案
无论MySQL还是Redis 自身都带有数据同步的机制,像比较常用的MySQL的Master/Slave模式,就是由Slave端分析Master的binlog来实现的,这样的数据其实还是一个异步过程,只不过当服务器都在同一内网时,异步的延迟几乎可以忽略
那么理论上我们也可以用同样方式,分析MySQL的binlog文件并将数据插入Redis。但是这需要对binlog文件以及MySQL有非常深入的理解,同时由于binlog存在Statement/Row/Mixedlevel多种形式,分析binlog实现同步的工作量是非常大的。
因此这里选择了一种开发成本更加低廉的方式,借用已经比较成熟的MySQL UDF,将MySQL数据首先放入Gearman中,然后通过一个自己编写的PHP Gearman Worker,将数据同步到Redis
/
缓存池
@author xiaoquan
@create 2015年3月13日 上午10:32:13
@see
/
public class CachePool {
private static CachePool instance;//缓存池唯一实例
private static Map<String,Object> cacheItems;//缓存Map
private CachePool(){
cacheItems = new HashMap<String,Object>();
}
/
得到唯一实例
@return
/
public synchronized static CachePool getInstance(){
if(instance == null){
instance = new CachePool();
}
return instance;
}
/
清除所有Item缓存
/
public synchronized void clearAllItems(){
cacheItemsclear();
}
/
获取缓存实体
@param name
@return
/
public synchronized Object getCacheItem(String name){
if(!cacheItemscontainsKey(name)){
return null;
}
CacheItem cacheItem = (CacheItem) cacheItemsget(name);
if(cacheItemisExpired()){
return null;
}
return cacheItemgetEntity();
}
/
存放缓存信息
@param name
@param obj
@param expires
/
public synchronized void putCacheItem(String name,Object obj,long expires){
if(!cacheItemscontainsKey(name)){
cacheItemsput(name, new CacheItem(obj, expires));
}
CacheItem cacheItem = (CacheItem) cacheItemsget(name);
cacheItemsetCreateTime(new Date());
cacheItemsetEntity(obj);
cacheItemsetExpireTime(expires);
}
public synchronized void putCacheItem(String name,Object obj){
putCacheItem(name,obj,-1);
}
/
移除缓存数据
@param name
/
public synchronized void removeCacheItem(String name){
if(!cacheItemscontainsKey(name)){
return;
}
cacheItemsremove(name);
}
/
获取缓存数据的数量
@return
/
public int getSize(){
return cacheItemssize();
}
}
public class CacheItem {
private Date createTime = new Date();//创建缓存的时间
private long expireTime = 1;//缓存期满的时间
private Object entity;//缓存的实体
public CacheItem(Object obj,long expires){
thisentity = obj;
thisexpireTime = expires;
}
public boolean isExpired(){
return (expireTime != -1 && new Date()getTime()-createTimegetTime() > expireTime);
}
/
省略getter、setter方法
/
}
1、OSCache
OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何java应用程序的普通的缓存解决方案。
OSCache有以下特点:
(1)缓存任何对象,你可以不受限制的缓存部分jsp页面或>
永久缓存--缓存能随意的写入硬盘,因此答应昂贵的创建(eXPensive-to-create)数据来保持缓存,甚至能让应用重启。
(2)支持集群--集群缓存数据能被单个的进行参数配置,不需要修改代码。
缓存记录的过期--你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(假如默认性能不需要时)。
2、Java Caching System
JSC(Java Caching System)是一个用分布式的缓存系统,是基于服务器的java应用程序。它是通过提供治理各种动态缓存数据来加速动态web应用。
JCS和其他缓存系统一样,也是一个用于高速读取,低速写入的应用程序。
动态内容和报表系统能够获得更好的性能。
假如一个网站,有重复的网站结构,使用间歇性更新方式的数据库(而不是连续不断的更新数据库),被重复搜索出相同结果的,就能够通过执行缓存方式改进其性能和伸缩性。
3、EHCache
EHCache 是一个纯java的在进程中的缓存,它具有以下特性:快速,简单,为Hibernate21充当可插入的缓存,最小的依靠性,全面的文档和测试。
4、JCache
JCache是个开源程序,正在努力成为JSR-107开源规范,JSR-107规范已经很多年没改变了。这个版本仍然是构建在最初的功能定义上。
5、ShiftOne
ShiftOne Java Object Cache是一个执行一系列严格的对象缓存策略的Java lib,就像一个轻量级的配置缓存工作状态的框架。
6、SwarmCache
SwarmCache是一个简单且有效的分布式缓存,它使用ip multicast与同一个局域网的其他主机进
行通讯,是非凡为集群和数据驱动web应用程序而设计的。
SwarmCache能够让典型的读 *** 作大大超过写 *** 作的这类应用提供更好的性能支持。
SwarmCache使用JavaGroups来治理从属关系和分布式缓存的通讯。
扩展资料
Java中缓存存在的原因:
一 般情况下,一个网站,或者一个应用,它的一般形式是,浏览器请求应用服务器,应用服务器做一堆计算后再请求数据库,数据库收到请求后再作一堆计算后把数据 返回给应用服务器。
应用服务器再作一堆计算后把数据返回给浏览器,这个是一个标准流程。但是随着互连网的普及,上网的人越来越多,网上的信息量也越来越多。
数据库每秒中接受请求的次数也是有限的,如果利用有限的资源来提供尽可能大的吞吐量呢。一个办法:减少计算量,缩短请求流程(减少网络io或者硬盘io),这时候缓存就可以大展手脚了。
缓存的基本原理就是打破上图中所描绘的标准流程,在这个标准流程中,任何 一个环节都可以被切断请求可以从缓存里取到数据直接返回。
以上就是关于java找不到高速缓存条目怎么办全部的内容,包括:java找不到高速缓存条目怎么办、java怎么使用redis进行mysql数据的缓存、java怎么实现map 缓存技术等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)