将对象缓存到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 shardInfos = new ArrayList();
        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,测试

        将对象缓存到redis中_第1张图片


你可能感兴趣的:(java)