- 浏览: 429676 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (269)
- 原创 (7)
- Java (51)
- Java Concurrency (2)
- IDE (16)
- Linux (46)
- Database (23)
- NoSQL (35)
- Web服务器 (23)
- Log日志 (11)
- HTTP (11)
- HTML (2)
- XML (1)
- Test (7)
- Mina (0)
- Amoeba (4)
- Cobar (1)
- 序列化 (2)
- Python (5)
- PHP (1)
- Socket通信 (1)
- Network (3)
- Struts (2)
- Web前端 (10)
- Maven (6)
- SVN (15)
- Json (1)
- XMPP (2)
- Go (1)
- Other (4)
- 未整理 (5)
最新评论
-
u012374672:
[color=darkred][/color][flash=2 ...
Mongo的ORM框架的学习Morphia(annotations) -
b_l_east:
很有问题啊
利用redis的transaction功能,实现分布式下加锁
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中存取正确.
发表评论
-
mongodb 地理位置处理
2016-05-16 13:39 1419我只记录我用到的部分,没有完整分析mongodb对地理位置 ... -
Redis配置文件redis.conf
2014-11-14 14:10 1869# Redis configuration file ex ... -
Redis高可用部署及监控
2014-11-12 13:25 1098一、 Re ... -
JCS官方文档的简单笔记,仅供自己参考
2014-09-26 20:08 7791. 基本配置 jcs.default=DCjcs.de ... -
JCS基本配置
2014-09-26 19:39 9431、默认的内存缓存 ... -
NoSQL解决方案比较(MongoDB vs Redis, Tokyo Cabinet, and Berkeley DB)
2013-09-30 14:20 1341NoSQL解决方案比较 NoSQL Solution: E ... -
morphia与spring的整合
2012-12-07 15:06 1484转自: http://www.blogjava.net/wat ... -
Mongo的ORM框架的学习Morphia(十五)Morphia+spring整合
2012-12-07 15:06 1657转自:http://topmanopensource.itey ... -
Mongo的ORM框架的学习Morphia(十二) morphia的Query和Update
2012-12-07 15:06 1875转自:http://topmanopensource.itey ... -
Mongo的ORM框架的学习Morphia(十) morphia应用
2012-12-05 14:47 1462转自:http://topmanopensource.itey ... -
Mongo的ORM框架的学习Morphia(九) morphia简单使用
2012-12-05 14:44 1380转自 http://topmanopensource.itey ... -
Mongo的ORM框架的学习Morphia(八) morphia数据库访问接口
2012-12-05 14:35 2019转自:http://topmanopensource.itey ... -
Mongo的ORM框架的学习Morphia(annotations)
2012-12-05 14:33 2543一:@Entity的使用 @Entity ... -
Instagram的Redis实践(内存占用优化)
2012-11-30 10:43 1201转自:http://blog.nosqlfan.com/htm ... -
SQL 和Mongo 对比图表
2012-11-28 14:54 2209参看官方说明: http://www.mongodb ... -
MongoDB 入门指南、示例
2012-11-23 10:38 854转自:http://www.cnblogs.com/hoojo ... -
mongodb中使用MapReduce
2012-11-23 10:12 1213MapReduce函数的用法如下: db.users.ma ... -
python的redis用法
2012-11-22 15:48 1170#! /usr/bin/env python #coding ... -
Python连接redis
2012-11-22 15:46 5621一、Redis是流行的NOSQL内存数据库,以Key-Valu ... -
【pipeline】【分布式的id生成器】【分布式锁【watch】【multi】】【redis分布式】
2012-08-29 10:42 1376转自 http://www.bwkeji.com/a/wang ...
相关推荐
总的来说,Jedis是Java开发者与Redis服务器交互的重要工具,配合Apache Commons Pool2库,它提供了高效、可靠的连接管理机制,使我们能够充分利用Redis的数据存储和处理能力。正确配置和使用Jedis,可以显著提升应用...
赠送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依赖包"指的是一款基于Java实现的Redis客户端库Jedis的2.9.0版本,与Apache Commons Pool 2.4.2版本相结合的依赖包。这个组合主要用于优化Redis连接池管理,提高应用...
Jedis是Java开发的一款高效的Redis客户端库,广泛用于与Redis服务器进行交互,提供了一系列API来操作Redis中的数据结构,如字符串、哈希、列表、集合、有序集合等。`jedis-jedis-1.5.0-RC1.zip`是一个包含Jedis ...
Jedis是Java开发的一款高效的Redis客户端库,广泛用于与Redis服务器进行交互,提供了一系列API来操作Redis中的数据结构,如字符串、哈希、列表、集合、有序集合等。标题"jedis-jedis-1.5.0-RC2.zip"表明这是一个关于...
Jedis是Java开发的一款高效的Redis客户端,用于与Redis服务器进行通信。这个压缩包"jedis-jedis-1.5.0-RC1.tar.gz"包含了Jedis 1.5.0 Release Candidate 1版本的源代码和相关资源。在本文中,我们将深入探讨Jedis的...
总结来说,这三个JAR文件构成了一个完整的Jedis 3.0.0版本,为Java开发者提供了与Redis交互的强大工具,无论是简单的键值存储还是复杂的数据库操作,都可以通过Jedis轻松完成。同时,提供的文档和源代码资源有助于...
jedis2.3---jedis2.9版本jar包,附赠commons-pool.jar包
赠送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信息:...
7. **配置与升级**:Jedis的配置可以通过Java代码或属性文件完成,例如设置超时时间、选择不同的序列化方式等。随着Redis版本的更新,Jedis也会发布新版本来兼容新特性,因此开发者需要关注Jedis的版本更新和兼容性...
Jedis是Java开发的一款高效的Redis客户端库,广泛用于与Redis服务器进行交互,提供了一系列API来操作Redis中的数据结构,如字符串、哈希、列表、集合、有序集合等。标题"jedis-jedis-3.1.0-rc.zip"表明这是一个关于...
Jedis是Java开发的一款高效的Redis客户端库,广泛用于与Redis服务器进行交互,提供丰富的数据结构操作支持。在标题"jedis-jedis-3.6.0-rc1.tar.gz"中,我们可以看出这是Jedis的一个版本,即3.6.0的候选发布1版...
标签:redis、clients、jedis、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,...
Jedis是Java开发的一款高效的Redis客户端库,广泛用于与Redis服务器进行交互,支持各种Redis命令。Jedis 3.1.0-m1是这个库的一个版本,标记为里程碑(M1),意味着它是一个预发布版本,可能包含了新功能、改进和错误...
Jedis是Java编程语言中广泛使用的Redis客户端,而Apache Commons Pool2则是一个对象池实现,用于有效地管理资源,如数据库连接或在本例中,Jedis实例。 **Jedis 3.2.0** 是一个重要的Redis客户端,提供了与Redis...
在使用Jedis存储Java对象到Redis时,通常会先序列化对象,将其转化为二进制流,然后存储为Redis的String类型;当从Redis读取数据时,则进行反序列化,将二进制流还原为原来的对象。 Jedis库提供了丰富的API用于与...
- **哈希表操作**:存储对象: ```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的一个特定版本,Jedis是Java语言编写的一个Redis客户端库,用于与Redis服务器进行交互。这个版本是2.9.0,通常每个版本都会有性能优化、新功能的添加或者已知问题的修复。 ...
标题中的"java连接Redis所需jedis客户端包(jedis2.7+commons-pool2)"指的是在Java环境中,为了实现与Redis数据库的交互,我们需要Jedis 2.7.2版本的jar包以及Apache Commons Pool 2.0版本的jar包。这两个包是连接...
标签:redis、clients、jedis、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...