redis存储对象及对象链表集合

本文使用对象及对象链表的序列化或者转为json格式存储在redis

1.将对象序列化存储在redis,代码如下

//序列化 一个对象
    public static byte [] serialize(Object obj){
        ObjectOutputStream obi=null;
        ByteArrayOutputStream bai=null;
        try {
            bai=new ByteArrayOutputStream();
            obi=new ObjectOutputStream(bai);
            obi.writeObject(obj);
            byte[] byt=bai.toByteArray();
            return byt;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
    
    //反序列化一个对象
    public static Object unserizlize(byte[] byt){
        ObjectInputStream oii=null;
        ByteArrayInputStream bis=null;
        bis=new ByteArrayInputStream(byt);
        try {
            oii=new ObjectInputStream(bis);
            Object obj=oii.readObject();
            return obj;
        } catch (Exception e) {
            
            e.printStackTrace();
        }
		return null;
    }
/**
     * 序列化 list 集合
     * 
     * @param list
     * @return
     */
    public static byte[] serializeList(List<?> list) {
        if (list == null || list.size() == 0) {
            return null;
        }
        ObjectOutputStream oos = null;
        ByteArrayOutputStream baos = null;
        byte[] bytes = null;
        try {
            baos = new ByteArrayOutputStream();
            oos = new ObjectOutputStream(baos);
            for (Object obj : list) {
                oos.writeObject(obj);
            }
            bytes = baos.toByteArray();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            close(oos);
            close(baos);
        }
        return bytes;
    }

    /**
     * 反序列化 list 集合
     * 
     * @param lb
     * @return
     */
    public static List<?> unserializeList(byte[] bytes) {
        if (bytes == null) {
            return null;
        }
        List<Object> list = new ArrayList<Object>();
        ByteArrayInputStream bais = null;
        ObjectInputStream ois = null;
        try {
            // 反序列化
            bais = new ByteArrayInputStream(bytes);
            ois = new ObjectInputStream(bais);
            while (bais.available() > 0) {
                Object obj = (Object) ois.readObject();
                if (obj == null) {
                    break;
                }
                list.add(obj);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            close(bais);
            close(ois);
        }
        return list;
    }

    
    /**
     * 关闭io流对象
     * 
     * @param closeable
     */
    public static void close(Closeable closeable) {
        if (closeable != null) {
            try {
                closeable.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

测试类如下

public static void main(String[] args) throws Exception {
		@SuppressWarnings("resource")
		ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{
				"classpath:spring/ApplicationContext-dataSource.xml",
				"classpath:spring/ApplicationContext-main.xml",
				"classpath:spring/ApplicationContext-redis.xml"}); 
		RedisDaoImpl redisDaoImpl=context.getBean("redisDaoImpl",RedisDaoImpl.class);
		DaoSupport dao=context.getBean("daoSupport",DaoSupport.class);
		Jedis jedis=redisDaoImpl.getJedis();   //获取Jedis
		PageData pd=new PageData();
		List<Shoping> balance_list=new ArrayList<Shoping>();
		balance_list=(List<Shoping>)dao.findForList("ShopingMapper.listAll2", pd);   //查询数据库获得对象列表集合
		jedis.set("shop".getBytes(),serializeList(balance_list));                    //序列化list集合
		System.out.println("序列化的集合:"+serializeList(balance_list));
		byte[] byt=jedis.get("shop".getBytes());            
		balance_list=new ArrayList<Shoping>();
		balance_list=(List<Shoping>) unserializeList(byt);   //反序列化
		System.out.println("测试输出:"+balance_list);
	}

控制台输出结果如下

测试输出:[Shoping [SP_NUM=20191120001, SP_SORT=保健品, SP_TITLE=42, SP_IMAGE1=release/goods/211b6056-d9e0-45e0-ae91-76fb4d579315.jpg, SP_IMAGE2=release/goods/05fab9ba-7780-4453-9406-d7f8eacbcc13.png, SP_IMAGE3=release/goods/6dd5a0b7-3611-4922-82ef-1d6c5e5e88e1.jpg, SP_IMAGE4=release/goods/7be5a20e-06f1-4a0f-a194-dc4788034281.png, SP_IMAGE5=release/goods/6e99c61f-84f6-4a2d-ac22-13429195595b.png, SP_ITEM=release/goods/624b6112-d566-482c-adc7-450a2f378e5f.jpg, SP_CPRICE=3000.0, SP_OPRICE=0.0, SP_STOCK=0, BUY_MODE=2, AUCTION=2, AUCTION_NUM=0, AUTOMATIC=0, AUCTION_STATUS=3, SP_STATUS=1, SHOPING_ID=842bb319311a49a8a9992a689b34a66d, SHELF_TIME=2019-11-20 16:29:56, SALES_VOLUME=0, SP_ARRAY=0], Shoping [SP_NUM=20191120002, SP_SORT=保健品, SP_TITLE=叶黄素酯蜂蜜制品1瓶, SP_IMAGE1=release/goods/878510eb-1d5f-4165-8a4e-d27058c8648b.jpg, SP_IMAGE2=release/goods/94a5c8c9-37b4-4d47-b703-39229b514973.jpg, SP_IMAGE3=release/goods/0f125570-1f9b-46eb-8152-c434bb36d9fa.png, SP_IMAGE4=release/goods/9efa8003-a32f-49fc-8701-c7a8468a4b65.jpg, SP_IMAGE5=release/goods/af013a50-d987-4182-888c-bc2f8c747c80.jpg, SP_ITEM=release/goods/071e8f1a-602b-413e-a09e-f40d076fa9ef.jpg, SP_CPRICE=200.0, SP_OPRICE=0.0, SP_STOCK=0, BUY_MODE=2, AUCTION=2, AUCTION_NUM=0, AUTOMATIC=0, AUCTION_STATUS=3, SP_STATUS=1, SHOPING_ID=5312e60b8d6a4712a22f57dfc66bdad7, SHELF_TIME=2019-11-20 16:32:22, SALES_VOLUME=0, SP_ARRAY=0], Shoping [SP_NUM=20191120003, SP_SORT=保健品, SP_TITLE=视动力植物饮料12瓶装, SP_IMAGE1=release/goods/6dbc5e3d-df7a-47ef-a057-c9b80db08480.jpg, SP_IMAGE2=release/goods/635daa8a-a940-45c0-8cb7-f41cf2ae0917.jpg, SP_IMAGE3=release/goods/6791eb4d-3d91-40f1-9cef-80865c3b9c49.png, SP_IMAGE4=release/goods/bf9f7708-4dfb-4df6-aa10-faa40d9be81f.jpg, SP_IMAGE5=release/goods/8e23c352-4cfb-4e2e-a3f5-e0751f676b30.jpg, SP_ITEM=release/goods/67bd40a4-263f-4e03-b865-0d413e6c844b.jpg, SP_CPRICE=120.0, SP_OPRICE=0.0, SP_STOCK=0, BUY_MODE=2, AUCTION=2, AUCTION_NUM=0, AUTOMATIC=0, AUCTION_STATUS=3, SP_STATUS=1, SHOPING_ID=edb1f2c772074b73a4b833152422c669, SHELF_TIME=2019-11-20 16:42:16, SALES_VOLUME=0, SP_ARRAY=0], Shoping [SP_NUM=20191120004, SP_SORT=保健品, SP_TITLE=视动力植物饮料20瓶装, SP_IMAGE1=release/goods/c4b10bef-c3cc-401b-8be8-9aba46676c76.jpg, SP_IMAGE2=release/goods/7403d47c-5e21-4655-9927-18b8c0bd619c.jpg, SP_IMAGE3=release/goods/e1854861-63d8-4e64-99ae-bf75e5d2f303.png, SP_IMAGE4=release/goods/2cb3ed22-72b0-4a35-b40c-3ef31461bd45.jpg, SP_IMAGE5=release/goods/ea2153c5-7ee7-422c-8b13-aa54b1ae0465.jpg, SP_ITEM=release/goods/60d4e4d5-30ee-4ac7-a672-fc45110c3a90.jpg, SP_CPRICE=200.0, SP_OPRICE=0.0, SP_STOCK=0, BUY_MODE=2, AUCTION=2, AUCTION_NUM=0, AUTOMATIC=0, AUCTION_STATUS=3, SP_STATUS=1, SHOPING_ID=246a97b9099b4c2c86410664442cad13, SHELF_TIME=2019-11-20 16:44:02, SALES_VOLUME=0, SP_ARRAY=0]]

2.将对象转为json格式存储在redis,代码如下

/**对象转为json字符串后存储
	 * @return
	 * @throws IOException
	 */
    public void setJsonString(String key,Object object){
        Jedis jedis = getJedis();
        jedis.set(key, JSON.toJSONString(object));
        jedis.close();
    }
   
    
    /**取出json字符串转为对象
	 * @return
	 * @throws IOException
	 */
    public Object getJsonObject(String key,Class clazz){
        Jedis jedis = getJedis();
        String value = jedis.get(key);
        jedis.close();
        return JSON.parseObject(value,clazz);
    }
 /**对象链表转为json字符串后存储
	 * @return
	 * @throws IOException
	 */
    public void setJsonStringList(String key,List<?> list){
        Jedis jedis = getJedis();
        jedis.set(key, JSON.toJSONString(list));
        jedis.close();
    }
    
    /**取出json字符串转为对象链表
	 * @return
	 * @throws IOException
	 */
    public List<?> getJsonObjectList(String key,Class clazz){
        Jedis jedis = getJedis();
        String value = jedis.get(key);
        jedis.close();
        return JSON.parseArray(value,clazz);
    }

测试类如下

public static void main(String[] args) throws Exception {
		@SuppressWarnings("resource")
		ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{
				"classpath:spring/ApplicationContext-dataSource.xml",
				"classpath:spring/ApplicationContext-main.xml",
				"classpath:spring/ApplicationContext-redis.xml"}); 
		RedisDaoImpl redisDaoImpl=context.getBean("redisDaoImpl",RedisDaoImpl.class);
		DaoSupport dao=context.getBean("daoSupport",DaoSupport.class);
		Jedis jedis=redisDaoImpl.getJedis();   //获取Jedis
		PageData pd=new PageData();
		List<Shoping> balance_list=new ArrayList<Shoping>();
		balance_list=(List<Shoping>)dao.findForList("ShopingMapper.listAll2", pd);   //查询数据库获得对象列表集合
		
		List<Shoping> new_list=new ArrayList<Shoping>();
		redisDaoImpl.setJsonStringList("shoplist", balance_list);  //将对象链表转为json字符串
		new_list=(List<Shoping>) redisDaoImpl.getJsonObjectList("shoplist", Shoping.class);  //将json字符串转为对象链表
		System.out.println("json字符串转为对象链表:"+new_list);
		
		if(balance_list.size()>0){
			Shoping shop=balance_list.get(0);
			redisDaoImpl.setJsonString("shop", shop);    //将对象转为json格式
			Shoping new_shop = (Shoping)redisDaoImpl.getJsonObject("shop",Shoping.class);  //将json字符串转为对象
			System.out.println("将对象转为json格式后又转为对象:"+new_shop);
			System.out.println("商品标题:"+new_shop.getSP_TITLE());
		}
	}

控制台输出结果为

json字符串转为对象链表:[Shoping [SP_NUM=20191120001, SP_SORT=保健品, SP_TITLE=42, SP_IMAGE1=release/goods/211b6056-d9e0-45e0-ae91-76fb4d579315.jpg, SP_IMAGE2=release/goods/05fab9ba-7780-4453-9406-d7f8eacbcc13.png, SP_IMAGE3=release/goods/6dd5a0b7-3611-4922-82ef-1d6c5e5e88e1.jpg, SP_IMAGE4=release/goods/7be5a20e-06f1-4a0f-a194-dc4788034281.png, SP_IMAGE5=release/goods/6e99c61f-84f6-4a2d-ac22-13429195595b.png, SP_ITEM=release/goods/624b6112-d566-482c-adc7-450a2f378e5f.jpg, SP_CPRICE=3000.0, SP_OPRICE=0.0, SP_STOCK=0, BUY_MODE=2, AUCTION=2, AUCTION_NUM=0, AUTOMATIC=0, AUCTION_STATUS=3, SP_STATUS=1, SHOPING_ID=842bb319311a49a8a9992a689b34a66d, SHELF_TIME=2019-11-20 16:29:56, SALES_VOLUME=0, SP_ARRAY=0], Shoping [SP_NUM=20191120002, SP_SORT=保健品, SP_TITLE=叶黄素酯蜂蜜制品1瓶, SP_IMAGE1=release/goods/878510eb-1d5f-4165-8a4e-d27058c8648b.jpg, SP_IMAGE2=release/goods/94a5c8c9-37b4-4d47-b703-39229b514973.jpg, SP_IMAGE3=release/goods/0f125570-1f9b-46eb-8152-c434bb36d9fa.png, SP_IMAGE4=release/goods/9efa8003-a32f-49fc-8701-c7a8468a4b65.jpg, SP_IMAGE5=release/goods/af013a50-d987-4182-888c-bc2f8c747c80.jpg, SP_ITEM=release/goods/071e8f1a-602b-413e-a09e-f40d076fa9ef.jpg, SP_CPRICE=200.0, SP_OPRICE=0.0, SP_STOCK=0, BUY_MODE=2, AUCTION=2, AUCTION_NUM=0, AUTOMATIC=0, AUCTION_STATUS=3, SP_STATUS=1, SHOPING_ID=5312e60b8d6a4712a22f57dfc66bdad7, SHELF_TIME=2019-11-20 16:32:22, SALES_VOLUME=0, SP_ARRAY=0], Shoping [SP_NUM=20191120003, SP_SORT=保健品, SP_TITLE=视动力植物饮料12瓶装, SP_IMAGE1=release/goods/6dbc5e3d-df7a-47ef-a057-c9b80db08480.jpg, SP_IMAGE2=release/goods/635daa8a-a940-45c0-8cb7-f41cf2ae0917.jpg, SP_IMAGE3=release/goods/6791eb4d-3d91-40f1-9cef-80865c3b9c49.png, SP_IMAGE4=release/goods/bf9f7708-4dfb-4df6-aa10-faa40d9be81f.jpg, SP_IMAGE5=release/goods/8e23c352-4cfb-4e2e-a3f5-e0751f676b30.jpg, SP_ITEM=release/goods/67bd40a4-263f-4e03-b865-0d413e6c844b.jpg, SP_CPRICE=120.0, SP_OPRICE=0.0, SP_STOCK=0, BUY_MODE=2, AUCTION=2, AUCTION_NUM=0, AUTOMATIC=0, AUCTION_STATUS=3, SP_STATUS=1, SHOPING_ID=edb1f2c772074b73a4b833152422c669, SHELF_TIME=2019-11-20 16:42:16, SALES_VOLUME=0, SP_ARRAY=0], Shoping [SP_NUM=20191120004, SP_SORT=保健品, SP_TITLE=视动力植物饮料20瓶装, SP_IMAGE1=release/goods/c4b10bef-c3cc-401b-8be8-9aba46676c76.jpg, SP_IMAGE2=release/goods/7403d47c-5e21-4655-9927-18b8c0bd619c.jpg, SP_IMAGE3=release/goods/e1854861-63d8-4e64-99ae-bf75e5d2f303.png, SP_IMAGE4=release/goods/2cb3ed22-72b0-4a35-b40c-3ef31461bd45.jpg, SP_IMAGE5=release/goods/ea2153c5-7ee7-422c-8b13-aa54b1ae0465.jpg, SP_ITEM=release/goods/60d4e4d5-30ee-4ac7-a672-fc45110c3a90.jpg, SP_CPRICE=200.0, SP_OPRICE=0.0, SP_STOCK=0, BUY_MODE=2, AUCTION=2, AUCTION_NUM=0, AUTOMATIC=0, AUCTION_STATUS=3, SP_STATUS=1, SHOPING_ID=246a97b9099b4c2c86410664442cad13, SHELF_TIME=2019-11-20 16:44:02, SALES_VOLUME=0, SP_ARRAY=0]]

将对象转为json格式后又转为对象:Shoping [SP_NUM=20191120001, SP_SORT=保健品, SP_TITLE=42, SP_IMAGE1=release/goods/211b6056-d9e0-45e0-ae91-76fb4d579315.jpg, SP_IMAGE2=release/goods/05fab9ba-7780-4453-9406-d7f8eacbcc13.png, SP_IMAGE3=release/goods/6dd5a0b7-3611-4922-82ef-1d6c5e5e88e1.jpg, SP_IMAGE4=release/goods/7be5a20e-06f1-4a0f-a194-dc4788034281.png, SP_IMAGE5=release/goods/6e99c61f-84f6-4a2d-ac22-13429195595b.png, SP_ITEM=release/goods/624b6112-d566-482c-adc7-450a2f378e5f.jpg, SP_CPRICE=3000.0, SP_OPRICE=0.0, SP_STOCK=0, BUY_MODE=2, AUCTION=2, AUCTION_NUM=0, AUTOMATIC=0, AUCTION_STATUS=3, SP_STATUS=1, SHOPING_ID=842bb319311a49a8a9992a689b34a66d, SHELF_TIME=2019-11-20 16:29:56, SALES_VOLUME=0, SP_ARRAY=0]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值