• jedis中的两组方法


    redis中序列化对象的时候要注意.

    jedis中有两组方法:

    1,key为string类型,value也为string类型.(必须的)

    2,key为字节数组,那么valeu也会转成字节数组,(必须的)

    key与value一一对应这一点要注意.

    体会:在学习一个新的东西的时候,可以api挨着一个一个调用.对比看他是什么情况.

    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.EOFException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.util.HashMap;
    import java.util.List;
    import redis.clients.jedis.Jedis;
    
    public class Test05 {
    
        public static void main(String[] args) throws Exception {
            Jedis jedis = new Jedis("localhost");
            HashMap<String,Object> map = new HashMap<String, Object>();
            map.put("我是", "中国人");
            map.put("你们", "外国人");
            //这个方法很特别:它的key呀,不是String,而是一个数组,而这个key对应的value也是一个字节数组
            jedis.rpushx("keyName".getBytes(),writeObject(map) );
            //这个方法也很特点:它返回来的vlaue的list集合都是字节数组
            List<byte[]> list=jedis.lrange("keyName".getBytes(), 0, -1);
            //这样得到就是一个String
            List<String> list2=jedis.lrange("keyName", 0, -1);
        }
        
        /**
         * 把对象转成字节数组.
         * 把一个对象,写入到一个字节数组流中;
         * 然后从这个字节数组流,得到字节数组.
         */
        public static byte[] writeObject(Object o) throws Exception {  
            ByteArrayOutputStream bos = new ByteArrayOutputStream();  
            ObjectOutputStream oos = new ObjectOutputStream(bos);  
            oos.writeObject(o);  
            oos.flush();  
            oos.close();  
            bos.close();  
            return bos.toByteArray();
        }  
      
        /**
         * 把字节数组,转成一个对象. 
         */      
        public static Object readObject(byte[] object) throws Exception{  
            ByteArrayInputStream bis = new ByteArrayInputStream(object);  
            ObjectInputStream ois = new ObjectInputStream(bis);  
            Object o = null;  
            try {  
                o = ois.readObject();  
            } catch(EOFException e) {  
                System.err.print("read finished");  
            }  
            bis.close();  
            ois.close();  
            return o;  
       }  
    }

    2016年3月23日13:06:30

  • 相关阅读:
    使用IOCP完成端口队列做任务队列
    对Zlib单元进行再封装
    XmlReader/XmlWriter 类
    TextReader/TextWriter 的类
    LINQ to XML
    Xml序列化
    动态Linq(结合反射)
    设计模式总结
    深入了解.Net上下文
    应用程序域
  • 原文地址:https://www.cnblogs.com/yinyu/p/5310667.html
Copyright © 2020-2023  润新知