java操作redis数据库五:Object任意类型

在开发过程中,会发现像以上一样去操作时非常麻烦的,因为要考虑到不同的类型,

那么redsi是否可以存储object对象呢,答案是肯定的jedis的set方法只能存放string字符串,但是通过熟悉jedis,会发现一个

jedis.set(byte[] key,byte[] value);方法  本文就是通过这个方法进行操作Object对象的

废话不多说,直接上代码


package com.redis;


import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;


import redis.clients.jedis.Jedis;


import com.sun.xml.internal.messaging.saaj.util.ByteInputStream;


/**
 * redis操作object对象
 * @author Administrator
 *
 */
public class jedisUtlis {
/**
* 将对象转成byte数组
*/
public static byte[] toBytArray(Object obj){
ByteArrayOutputStream bos=new ByteArrayOutputStream();
ObjectOutputStream  oos=null;
byte[] b=null;
try {
oos=new ObjectOutputStream(bos);
System.out.println("oos:"+bos);
} catch (IOException e1) {
System.out.println("实例化io流出错。。。。。");
e1.printStackTrace();
}
try{
oos.writeObject(obj);

b=bos.toByteArray();

}catch(Exception e){
System.out.println("转数组对象出错了。。。");
}finally{
try{
oos.close();
bos.close();
}catch(Exception e){
e.printStackTrace();
}
}
return b;
}
/**
* 将bety数组反转成java对象
* @throws IOException 
*/
public static Object toObject(byte[] b){
Object obj=null;
ByteArrayInputStream bais=new ByteArrayInputStream(b);
ObjectInputStream ois=null;
try {
ois=new ObjectInputStream(bais);
obj=ois.readObject();
} catch (Exception e) {
System.out.println("流转换的出现问题");
e.printStackTrace();
}finally{
try {
ois.close();
bais.close();
} catch (IOException e) {
System.out.println("关闭流的时候出现问题。。。");
e.printStackTrace();
}

}
return obj;
}


}
/**
 * 测试类
 * @author Administrator
 *
 */
class person implements Serializable{
String name;
String age;
String sex;
person(){}
public person(String name, String age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}


}


class Test{
public static void main(String[] args) {
Jedis jedis=new DemoRedis().getJedis();
person p=new person("xiaodan","12","女");
//转成byte数组
byte[] value=jedisUtlis.toBytArray(p);
//转成byte数组
byte[] key="person1".getBytes();
jedis.set(key, value);
//从数据库获取对象
byte[] obj=jedis.get(key);
//将对象转成本地类
person p1=(person) jedisUtlis.toObject(obj);

}
}



你可能感兴趣的:(redis,java,redis,nosql数据库,jedis,对象)