將物件快取到redis中
阿新 • • 發佈:2018-11-30
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,測試