`

Jedis存储Java对象 - (Java序列化为byte数组方式)

 
阅读更多

Redis入门 –  Jedis存储 Java对象  - (Java序列化为 byte数组方式 )

 

原文地址: http://alanland.iteye.com/admin/blogs/1600685 (欢迎转载  -  转载请保留该原文链接)

 

07/19/12 03:08:05 PM

 

Jedis开发 中,我们很多时候希望直接把一个对象放到 Redis中,然后在需要的时候取出来。 Redis key value都支持二进制安全的字符串,存储 Java对象不是问题,下面我们看一下如何来实现。

 

1要存储的对象

现在写一个很土的 Java Bean,包含两个字段, id name,类名叫做 Person。为了实现序列化需求,该类实现 Serializable接口。

public class Person implements Serializable {

private int id;

private String name;

 

public Person(int id, String name) {

this.id = id;

this.name = name;

}

 

public int getId() {

return id;

}

 

public String getName() {

return name;

}

}

 

2序列化、反序列化

写一个序列化工具类,来提供对象的序列化和饭序列化的工作。代码如下:

public class SerializeUtil {

public static byte[] 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) {

 

}

return null;

}

 

public static Object unserialize(byte[] bytes) {

ByteArrayInputStream bais = null;

try {

// 反序列化

bais = new ByteArrayInputStream(bytes);

ObjectInputStream ois = new ObjectInputStream(bais);

return ois.readObject();

} catch (Exception e) {

 

}

return null;

}

}

 

3写对象

Person对象写入 Redis中:

public void setObject() {

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

"\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获取对象:

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控制台输入:

100

alan

101

bruce

 

由此可见,序列化对象在 Redis中存取正确.

分享到:
评论

相关推荐

    jedis-x64-3.2.100.jar(内含commons-pool2-2.4.2.jar)

    总的来说,Jedis是Java开发者与Redis服务器交互的重要工具,配合Apache Commons Pool2库,它提供了高效、可靠的连接管理机制,使我们能够充分利用Redis的数据存储和处理能力。正确配置和使用Jedis,可以显著提升应用...

    jedis-2.9.0-API文档-中文版.zip

    赠送jar包:jedis-2.9.0.jar; 赠送原API文档:jedis-2.9.0-javadoc.jar; 赠送源代码:jedis-2.9.0-sources.jar; 包含翻译后的API文档:jedis-2.9.0-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId...

    jedis-2.9.0+commons-pool2-2.4.2redis依赖包

    标题中的"jedis-2.9.0+commons-pool2-2.4.2redis依赖包"指的是一款基于Java实现的Redis客户端库Jedis的2.9.0版本,与Apache Commons Pool 2.4.2版本相结合的依赖包。这个组合主要用于优化Redis连接池管理,提高应用...

    jedis-jedis-1.5.0-RC1.zip

    Jedis是Java开发的一款高效的Redis客户端库,广泛用于与Redis服务器进行交互,提供了一系列API来操作Redis中的数据结构,如字符串、哈希、列表、集合、有序集合等。`jedis-jedis-1.5.0-RC1.zip`是一个包含Jedis ...

    jedis-jedis-1.5.0-RC2.zip

    Jedis是Java开发的一款高效的Redis客户端库,广泛用于与Redis服务器进行交互,提供了一系列API来操作Redis中的数据结构,如字符串、哈希、列表、集合、有序集合等。标题"jedis-jedis-1.5.0-RC2.zip"表明这是一个关于...

    jedis-jedis-1.5.0-RC1.tar.gz

    Jedis是Java开发的一款高效的Redis客户端,用于与Redis服务器进行通信。这个压缩包"jedis-jedis-1.5.0-RC1.tar.gz"包含了Jedis 1.5.0 Release Candidate 1版本的源代码和相关资源。在本文中,我们将深入探讨Jedis的...

    jedis-3.0.0.jar、jedis-3.0.0-javadoc.jar、jedis-3.0.0-sources.jar

    总结来说,这三个JAR文件构成了一个完整的Jedis 3.0.0版本,为Java开发者提供了与Redis交互的强大工具,无论是简单的键值存储还是复杂的数据库操作,都可以通过Jedis轻松完成。同时,提供的文档和源代码资源有助于...

    jedis.jar包commons-pool.jar包

    jedis2.3---jedis2.9版本jar包,附赠commons-pool.jar包

    jedis-2.9.0-API文档-中英对照版.zip

    赠送jar包:jedis-2.9.0.jar 赠送原API文档:jedis-2.9.0-javadoc.jar 赠送源代码:jedis-2.9.0-sources.jar 包含翻译后的API文档:jedis-2.9.0-javadoc-API文档-中文(简体)-英语-对照版.zip 对应Maven信息:...

    jedis-jedis-3.1.0-m1.tar.gz

    7. **配置与升级**:Jedis的配置可以通过Java代码或属性文件完成,例如设置超时时间、选择不同的序列化方式等。随着Redis版本的更新,Jedis也会发布新版本来兼容新特性,因此开发者需要关注Jedis的版本更新和兼容性...

    jedis-jedis-3.1.0-rc.zip

    Jedis是Java开发的一款高效的Redis客户端库,广泛用于与Redis服务器进行交互,提供了一系列API来操作Redis中的数据结构,如字符串、哈希、列表、集合、有序集合等。标题"jedis-jedis-3.1.0-rc.zip"表明这是一个关于...

    jedis-jedis-3.6.0-rc1.tar.gz

    Jedis是Java开发的一款高效的Redis客户端库,广泛用于与Redis服务器进行交互,提供丰富的数据结构操作支持。在标题"jedis-jedis-3.6.0-rc1.tar.gz"中,我们可以看出这是Jedis的一个版本,即3.6.0的候选发布1版...

    jedis-3.6.0-API文档-中英对照版.zip

    标签:redis、clients、jedis、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,...

    jedis-jedis-3.1.0-m1.zip

    Jedis是Java开发的一款高效的Redis客户端库,广泛用于与Redis服务器进行交互,支持各种Redis命令。Jedis 3.1.0-m1是这个库的一个版本,标记为里程碑(M1),意味着它是一个预发布版本,可能包含了新功能、改进和错误...

    jedis-3.2.0.jar + commons-pool2-2.6.2.jar

    Jedis是Java编程语言中广泛使用的Redis客户端,而Apache Commons Pool2则是一个对象池实现,用于有效地管理资源,如数据库连接或在本例中,Jedis实例。 **Jedis 3.2.0** 是一个重要的Redis客户端,提供了与Redis...

    Jedis序列化和反序列化使用jar

    在使用Jedis存储Java对象到Redis时,通常会先序列化对象,将其转化为二进制流,然后存储为Redis的String类型;当从Redis读取数据时,则进行反序列化,将二进制流还原为原来的对象。 Jedis库提供了丰富的API用于与...

    jedis-jedis-1.5.0-RC2.tar.gz

    - **哈希表操作**:存储对象: ```java Map, String> user = new HashMap(); user.put("name", "Alice"); user.put("age", "25"); jedis.hset("user", user); Map, String> userInfo = jedis.hgetAll("user")...

    jedis-2.9.0-java

    标题中的"jedis-2.9.0-java"指的是Jedis的一个特定版本,Jedis是Java语言编写的一个Redis客户端库,用于与Redis服务器进行交互。这个版本是2.9.0,通常每个版本都会有性能优化、新功能的添加或者已知问题的修复。 ...

    java连接Redis所需jedis客户端包(jedis2.7+commons-pool2)

    标题中的"java连接Redis所需jedis客户端包(jedis2.7+commons-pool2)"指的是在Java环境中,为了实现与Redis数据库的交互,我们需要Jedis 2.7.2版本的jar包以及Apache Commons Pool 2.0版本的jar包。这两个包是连接...

    jedis-3.6.0-API文档-中文版.zip

    标签:redis、clients、jedis、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...

Global site tag (gtag.js) - Google Analytics