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