redis如何存储java对象

时间:2022-12-06 01:58

redis存储java对象的方法:1、写一个java Bean,包含id和name两个字段,类名是Person。因为要实现序列化需求,所以该类实现Serializable接口。2、需要写一个序列化工具类,用于提供对象的序列化和反序列化的工作;3、把Person对象写入Redis;4、用Jedis获取对象。


redis如何存储java对象



具体操作如下:

1、存储对象:写一个java Bean,包含id和name两个字段,类名是Person,该类实现Serializable接口。


publicclassPersonimplementsSerializable{

privateintid;

privateStringname;

publicPerson(intid,Stringname){

this.id=id;

this.name=name;

}

publicintgetId(){

returnid;

}

publicStringgetName(){

returnname;

}

}


2、写一个序列化工具类,用于提供对象的序列化和反序列化的工作。


publicclassSerializeUtil{

publicstaticbyte[]serialize(Objectobject){

ObjectOutputStreamoos=null;

ByteArrayOutputStreambaos=null;

try{

//序列化

baos=newByteArrayOutputStream();

oos=newObjectOutputStream(baos);

oos.writeObject(object);

byte[]bytes=baos.toByteArray();

returnbytes;

}catch(Exceptione){

}

returnnull;

}

publicstaticObjectunserialize(byte[]bytes){

ByteArrayInputStreambais=null;

try{

//反序列化

bais=newByteArrayInputStream(bytes);

ObjectInputStreamois=newObjectInputStream(bais);

returnois.readObject();

}catch(Exceptione){

}

returnnull;

}

}


3、把Person对象写入Redis。



publicvoidsetObject(){

Personperson=newPerson(100,"alan");

jedis.set("person:100".getBytes(),SerializeUtil.serialize(person));

person=newPerson(101,"bruce");

jedis.set("person:101".getBytes(),SerializeUtil.serialize(person));

}


上面代码运行后,到命令窗口读取对象看是否成功:


redis127.0.0.1:6379>getperson:100

"\xac\xed\x00\x05sr\x00\x15alanland.redis.Person\x05\xf4\x8d9A\xf4`\xb0\x02\x00\x02I\x00\x02idL\x00\x04namet\x00\x12Ljava/lang/String;xp\x00\x00\x00dt\x00\x04alan"

4、用Jedis获取对象。



publicPersongetObject(intid){

byte[]person=jedis.get(("person:"+id).getBytes());

return(Person)SerializeUtil.unserialize(person);

}


测试一下上一步存入的两个对象:


Personperson=test.getObject(100);

System.out.println(person.getId());

System.out.println(person.getName());

person=test.getObject(101);

System.out.println(person.getId());

System.out.println(person.getName());

Java控制台输入:

100

alan

101

bruce


标签:
随便看看
本类推荐
本类排行
热门标签

我国国家通讯社行不行啊细狗新年贺词祝福语2023年祝福语新年新年贺词新年贺词祝福语居家抗病毒小药箱除夕高速免费吗2022年除夕高速免费吗春联春联句子大全春联句子大全七字年夜饭十二道菜年夜饭十二道菜单年夜饭吃什么年夜饭吃什么菜吃年夜饭的寓意年夜饭黑芝麻菊花茶晒菊花茶腌腊肉送妈妈生日礼物汉白玉送闺蜜水钻送女人礼物爸爸生日送礼物送老公