1. 程式人生 > >將物件快取到redis中

將物件快取到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,測試