将对象缓存到redis中
1,java配置redis客户端
public class RedisClient implements Serializable{ private Jedis jedis; private JedisPool jedisPool; ShardedJedis shardedJedis; private ShardedJedisPool shardedJedisPool; public RedisClient(){ initialPool(); initialSharePool(); shardedJedis = shardedJedisPool.getResource(); jedis = jedisPool.getResource(); } /** * 初始化非切片池 */ private void initialPool(){ //池基本配置 JedisPoolConfig config = new JedisPoolConfig(); config.setMaxActive(20); config.setMaxIdle(5); config.setMaxWait(10001); config.setTestOnBorrow(false); jedisPool = new JedisPool(config, Enums.LINUX_HOST.getValue(), 6379); } /** * 初始化切片池 */ private void initialSharePool(){ //池基本配置 JedisPoolConfig config = new JedisPoolConfig(); config.setMaxActive(20); config.setMaxIdle(5); config.setMaxWait(10001); config.setTestOnBorrow(false); //slave连接 List<JedisShardInfo> shardInfos = new ArrayList<JedisShardInfo>(); shardInfos.add(new JedisShardInfo(Enums.LINUX_HOST.getValue(), 6379, 1000)); //构造池 shardedJedisPool = new ShardedJedisPool(config, shardInfos); } }
2,数组和对象的相互转化
1,对象实现Serializable接口,才可以序列化和反序列化
2,对象和数组相互转化的代码
public class ObjectAndByte { public static byte[] toByteArray (Object obj) { byte[] bytes = null; try { // object to bytearray ByteArrayOutputStream bo = new ByteArrayOutputStream(); ObjectOutputStream oo = new ObjectOutputStream(bo); oo.writeObject(obj); bytes = bo.toByteArray(); bo.close(); oo.close(); } catch (Exception e) { System.out.println("translation" + e.getMessage()); e.printStackTrace(); } return bytes; } /** * 数组转对象 * @param bytes * @return */ public static Object toObject (byte[] bytes) { Object obj = null; try { ByteArrayInputStream bis = new ByteArrayInputStream (bytes); ObjectInputStream ois = new ObjectInputStream (bis); obj = ois.readObject(); ois.close(); bis.close(); } catch (IOException ex) { ex.printStackTrace(); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } return obj; } }
3,测试