Redis關於對象的儲存


redis是不能直接儲存對象的。已知道的方法有兩種:

1.把對象序列化存進去,取出來的時候再反序列化成對象

package com.gametech.utils;  
  
import java.io.ByteArrayInputStream;  
import java.io.ByteArrayOutputStream;  
import java.io.ObjectInputStream;  
import java.io.ObjectOutputStream;  
  
import org.apache.log4j.Logger;  
  
public class SerializeUtil {  
  
    static Logger log = Logger.getLogger(SerializeUtil.class);  
    /** 
     *  
     * <p>Title: ObjTOSerialize</p> 
     * <p>Description: 序列化一個對象</p> 
     * @param obj 
     * @return 
     * @author guangshuai.wang 
     */  
    public static byte[] ObjTOSerialize(Object obj){  
        ObjectOutputStream oos = null;  
        ByteArrayOutputStream byteOut = null;  
        try{  
            byteOut = new ByteArrayOutputStream();  
            oos = new ObjectOutputStream(byteOut);  
            oos.writeObject(obj);  
            byte[] bytes = byteOut.toByteArray();  
            return bytes;  
        }catch (Exception e) {  
            log.error("對象序列化失敗");  
        }  
        return null;  
    }  
    /** 
     *  
     * <p>Title: unSerialize</p> 
     * <p>Description: 反序列化</p> 
     * @param bytes 
     * @return 
     * @author guangshuai.wang 
     */  
    public static Object unSerialize(byte[] bytes){  
        ByteArrayInputStream in = null;  
        try{  
            in = new ByteArrayInputStream(bytes);  
            ObjectInputStream objIn = new ObjectInputStream(in);  
            return objIn.readObject();  
        }catch (Exception e) {  
            log.error("反序列化失敗");  
        }  
        return null;  
    }  
} 

2.使用jedis.set(byte[], byte[])

通過這個API,很顯然我們能夠實現

jedis.set(String key, Object value)

jedis.set(String key, List<M> values)

我們需要關注的就是在cache的時候將Object和List對象轉換成字節數組並且需要提供將字節數組轉換成對象返回。

 

如果需要取對象的時候使用jedis.get:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM