关于java中Redis存取问题 - 爱问答

(爱问答)

关于java中Redis存取问题

java中用redisOperation.setex(keyInterface,RedisConstants.HOME_PAGE_EXPIRE_SECONDS,interfaceManagements);存入了三种类型值,分别是Key,有效期,状态,现在我想取出有效期和状态,怎么去啊,用redisOperation.get(key)怎么取不出来,为null

分类: java体系

在Jedis开发中,我们很多时候希望直接把一个对象放到Redis中,然后在需要的时候取出来。Redis的key和value都支持二进制安全的字符串,存储java对象不是问题,下面我们看一下如何来实现。1要存储的对象
现在写一个很土的java Bean,包含两个字段,id和name,类名叫做Person。为了实现序列化需求,该类实现Serializable接口。publicclassPersonimplementsSerializable{privateint id;private String name;publicPerson(int id, String name){this.id = id;this.name = name;}publicintgetId(){return id;}public String getName(){return name;}}
2序列化、反序列化
写一个序列化工具类,来提供对象的序列化和饭序列化的工作。代码如下:
publicclassSerializeUtil{publicstaticbyte[] serialize(Object object) {ObjectOutputStream oos = null;ByteArrayOutputStream baos = null;try {//序列化baos = new ByteArrayOutputStream();oos = new ObjectOutputStream(baos);oos.writeObject(object);byte[] bytes = baos.toByteArray();return bytes;} catch (Exception e) {}returnnull;}publicstatic Object unserialize(byte[] bytes){ByteArrayInputStream bais = null;try {//反序列化bais = new ByteArrayInputStream(bytes);ObjectInputStream ois = new ObjectInputStream(bais);return ois.readObject();} catch (Exception e) {}returnnull;}}
3写对象
将Person对象写入Redis中:publicvoidsetObject(){Person person = new Person(100, "alan");jedis.set("person:100".getBytes(), SerializeUtil.serialize(person));person = new Person(101, "bruce");jedis.set("person:101".getBytes(), SerializeUtil.serialize(person));}
运行上面代码之后,我们到命令行窗口中读取该对象,看看有没有写入成功:redis 127.0.0.1:6379> get person:100"xacxedx00x05srx00x15alanland.redis.Personx05xf4x8d9Axf4`xb0x02x00x02Ix00x02idLx00x04nametx00x12Ljava/lang/String;xpx00x00x00dtx00x04alan"
可以取到序列化之后的值。4取对象
用Jedis获取对象:public Person getObject(int id){byte[] person = jedis.get(("person:" + id).getBytes());return (Person) SerializeUtil.unserialize(person);}
测试一下上一步存入的两个对象:Person person = 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控制台输入:100alan101bruce
由此可见,序列化对象在Redis中存取正确。

 

相关标签:java

下一篇:elipse加数据库的图书管理器代码及方式,要可运行的

上一篇:什么是区块链BAAS服务?

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?