Redis数据库连接类分布式版

来源:互联网 发布:删除旧的windows文件夹 编辑:程序博客网 时间:2024/06/15 02:26
package com.zhiweism.youerplatform.utils;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.util.HashMap;import java.util.Map;import redis.clients.jedis.Jedis;/* * 缓存数据库操作类 * 支持负载均衡 * 作者:董志平 */public class RedisHelper{private static RedisHelper redis = null;private static Jedis jedis = null;private static int PORT = 6379;private static int TIMEOUT = 6000;private static String AUTH = "zhiweism";private static String KEY = "";private static Map<Integer,String> HOST = null;//主机列表public static RedisHelper getInstance(){if(redis == null){HOST = new HashMap<Integer, String>();HOST.put(0,"120.24.58.29");redis = new RedisHelper();}return redis;}//设置key并连接指定的服务器public boolean setKey(String key){int index = 0;try{index = getHostIndex(key);jedis = new Jedis(HOST.get(index),PORT,TIMEOUT);jedis.auth(AUTH);KEY = key;return true;}catch(Exception e){if(HOST.size()!=1)HOST.remove(index);return false;}}public void disconnect(){if(jedis != null){jedis.disconnect();jedis = null;}}//通过key计算hash主机Indexprivate int getHostIndex(String key){int index = Math.abs(HashManage.hashcode(key))%HOST.size();return index;}//插入字符串public void SetString(String value,int expire){jedis.set(KEY, value);jedis.expire(KEY,expire);}//获取一个字符串public String GetString(){String res =  jedis.get(KEY);return res;}//删除一个值public void RemoveString(){jedis.del(KEY);}/**set Object*/    public void SetOobject(Object object,int expire) {        jedis.set(KEY.getBytes(),serialize(object));        jedis.expire(KEY, expire);   }       /**get Object*/    public Object GetObject(){        byte[] value = jedis.get(KEY.getBytes());        Object obj = unserialize(value);        return obj;   }       /**delete a key**/    public boolean RemoveObject() {        boolean isok = jedis.del(KEY.getBytes())>0;        return isok;   }      //判断是否存在   public boolean IsExist(){   boolean os = jedis.exists(KEY);   return os;   }    public static byte[] serialize(Object object) {        ObjectOutputStream oos = null;        ByteArrayOutputStream baos = null;        try {             // 序列化            baos = new ByteArrayOutputStream();            oos = new ObjectOutputStream(baos);            oos.writeObject(object);            byte[] bytes = baos.toByteArray();            return bytes;       } catch (Exception e) {       }        return null;    }public static Object unserialize( byte[] bytes) {     ByteArrayInputStream bais = null;     try {         // 反序列化         bais = new ByteArrayInputStream(bytes);             ObjectInputStream ois = new ObjectInputStream(bais);         return ois.readObject();        } catch (Exception e) {        }         return null;  }}

0 0
原创粉丝点击