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
- Redis数据库连接类分布式版
- redis数据库连接
- 一个Redis分布式锁的工具类(升级版)
- Redis分布式
- Redis 分布式
- redis分布式
- Redis 和数据库连接池
- Redis分布式锁实现原理 java版
- Thinkphp分布式数据库连接代码分析
- 安装Redis数据库连接修改密码
- redis 分布式,主从同步
- redis 分布式,主从同步
- Redis实现分布式锁
- 分布式Redis搭建案例
- Redis分布式集群
- Redis 分布式锁实现
- Redis 分布式锁实现
- 分布式Redis集群解决方案
- Glide进阶详解(十二)
- Android设计模式之原型模式
- 面试题汇总
- 链表写通讯录
- JDBC数据库连接实例分享
- Redis数据库连接类分布式版
- Redis- 对象的空转时长(总结)
- 树的统计count
- CentOS7 安装Node.js
- GRE-C
- 基于Netty3的RPC架构笔记2之服务端与客户端
- HDU 1597 二分+数学
- javaSE的几个基本问题
- CentOS里上传下载rzsz