Jedisの2つの方法

5162 ワード

redisでオブジェクトをシーケンス化するときは注意してください.
Jedisには2つの方法があります.
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