redis如何存储java对象


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

具体操作如下:

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


上一篇:云主机和vps云主机有什么区别

下一篇:网站如何更换域名


redis java对象
Copyright © 2002-2019 测速网 www.inhv.cn 皖ICP备2023010105号
测速城市 测速地区 测速街道 网速测试城市 网速测试地区 网速测试街道
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!

热门搜索 城市网站建设 地区网站制作 街道网页设计 大写数字 热点城市 热点地区 热点街道 热点时间 房贷计算器