设为首页 收藏本站
查看: 352|回复: 0

[经验分享] hibernate-redis second level cache

[复制链接]

尚未签到

发表于 2016-12-19 07:42:47 | 显示全部楼层 |阅读模式
  package com.googlecode.hibernate.redis;
  import java.util.Properties;
  import org.apache.log4j.Logger;
  import org.hibernate.cache.Cache;
  import org.hibernate.cache.CacheException;
  import org.hibernate.cache.CacheProvider;
  import redis.clients.jedis.Jedis;
  @SuppressWarnings("deprecation")
  public class RedisCacheProvider implements CacheProvider{
  private Logger logger = Logger.getLogger(RedisCacheProvider.class);
  private Jedis jedis;
  
  public Cache buildCache(String regionName, Properties properties)
  throws CacheException {
  // TODO Auto-generated method stub
  logger.info("Building cache for region " + regionName);
  
  RedisCache cache = new RedisCache(regionName,jedis);
  
  return cache;
  }
  public boolean isMinimalPutsEnabledByDefault() {
  // TODO Auto-generated method stub
  return false;
  }
  public long nextTimestamp() {
  // TODO Auto-generated method stub
  return System.currentTimeMillis() / 100;
  }
  public void start(Properties properties) throws CacheException {
  // TODO Auto-generated method stub
  logger.info("Start Hibernate-Redis second level cache");
  int port = Integer.parseInt(properties.getProperty("redis.port"));
  int timeout = Integer.parseInt(properties.getProperty("redis.timeout"));
  String host = properties.getProperty("redis.host");
  String auth = properties.getProperty("redis.auth");
  
  logger.info("Jedis " + host + ":" + port + ":" + auth + ":" + timeout);
  jedis = new Jedis(host, port, timeout);
  jedis.auth(auth);
  jedis.flushAll();
  }
  public void stop() {
  // TODO Auto-generated method stub
  logger.info("Stop Hibernate-Redis second level cache");
  }
  }




package com.googlecode.hibernate.redis;


import java.util.Map;


import org.apache.log4j.Logger;
import org.hibernate.cache.Cache;
import org.hibernate.cache.CacheException;
import org.springframework.core.serializer.support.DeserializingConverter;
import org.springframework.core.serializer.support.SerializingConverter;




import redis.clients.jedis.Jedis;


public class RedisCache implements Cache{
private Logger logger = Logger.getLogger(RedisCache.class);

private final String regionName;
private final Jedis jedis;

public RedisCache(String regionName,Jedis jedis){
this.regionName = (regionName != null) ? regionName : "default";
this.jedis = jedis;

logger.info("RedisCache ok.");
}

public void clear() throws CacheException {
// TODO Auto-generated method stub
logger.info(regionName + " - clear ");
}


public void destroy() throws CacheException {
// TODO Auto-generated method stub
logger.info(regionName + " destroy - ReturResuorce ");
}





public long getElementCountInMemory() {
// TODO Auto-generated method stub
return 0;
}


public long getElementCountOnDisk() {
// TODO Auto-generated method stub
return 0;
}


public String getRegionName() {
// TODO Auto-generated method stub
return regionName;
}


public long getSizeInMemory() {
// TODO Auto-generated method stub
return 0;
}


public int getTimeout() {
// TODO Auto-generated method stub
return 0;
}


public void lock(Object key) throws CacheException {
// TODO Auto-generated method stub

}


public long nextTimestamp() {
// TODO Auto-generated method stub
return System.currentTimeMillis() / 100;
}

private byte[] serializeObject(Object obj){
SerializingConverter sc = new SerializingConverter();
return sc.convert(obj);
}

private Object deserializeObject(byte[] b){
DeserializingConverter dc = new DeserializingConverter();
return dc.convert(b);
}

public Object get(Object key) throws CacheException {
// TODO Auto-generated method stub
//logger.info("get " + key.toString() + ":" + key.getClass().getName());

byte[] k = serializeObject(key.toString());
byte[] v = jedis.get(k);
if (v != null && v.length > 0){
Object o = deserializeObject(v);
//logger.info("return: " + o.getClass().getName());
return o;
}

return null;
}


public void put(Object key, Object value) throws CacheException {
// TODO Auto-generated method stub
//logger.info("put " + key.toString() +  " - " + value.getClass().getName());

byte[] k = serializeObject(key.toString());
byte[] v = serializeObject(value);

jedis.set(k, v);
}


public Object read(Object key) throws CacheException {
// TODO Auto-generated method stub
//logger.info("read " + key.toString());
byte[] k = serializeObject(key.toString());
byte[] v = jedis.get(k);
if (v != null && v.length > 0){
Object o = deserializeObject(v);
return o;
}

return null;
}


public void remove(Object key) throws CacheException {
// TODO Auto-generated method stub
//logger.info("remove " + key.toString());

byte[] k = serializeObject(key.toString());
jedis.del(k);
}


public Map toMap() {
// TODO Auto-generated method stub
return null;
}


public void unlock(Object key) throws CacheException {
// TODO Auto-generated method stub

}


public void update(Object key, Object value) throws CacheException {
// TODO Auto-generated method stub
//logger.info("update " + key.toString());

byte[] k = serializeObject(key.toString());
byte[] v = serializeObject(value);

jedis.set(k, v);
}


}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-316101-1-1.html 上篇帖子: Redis 缓存数据库 下篇帖子: redis持久化策略
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表