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中存取正确。
分享到:
相关推荐
tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-...
Spring Data Redis 纯英文文档,介绍spring操作redis的一些用法
spring-data-redis-2.1.5.RELEASE和jedis2.9.0,用于java使用redis开发。
包括commons-pool-1.6.jar,jedis-2.0.0.jar,tomcat-redis-session-manager-1.2-tomcat-6&7.jar
标签:clients、jedis、redis、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译...
用于配置 tomcat-redis-session-manager
Redis支持很多编程语言的客户端,有C、C#、C++、Clojure、Common Lisp、Erlang、Go、Lua、...Redis官方列出的Java客户端也有少,有Jedis、JRedis、JDBC-Redis、RJC等,当然,Jedis是Redis官方首选的Java客户端开发包。
spring_redis集成,通过jedis作为redis的客户端。 只提供集成方式,具体api,参照jedis API
Redis Java客户端Jedis 2.9.0 jar+commons-pool2-2.4.2
Redis Windows32位+64位安装包,Linux压缩包, Redis图形操作管理软件,Jedis
里面包含了spring-data-redis-1.3.4.RELEASE.jar ,但是jedis可以不用,用spring-data-redis方式的同学可以使用
实现tomcat 8及以后版本的tomcat集群的session持久化操作,基于redis实现tomcat容器的session的持久化 tomcat-redis-session-manager-by-eguid.jar+jedis-2.9.0.jar+commons-pool2-2.2.jar集合包
java使用redis客户端需要的jar包jedis-2.8.0.jar,方便大家查找
jedis客户端两个包:jedis2.7.2.jar+commons-pool2-2.0.jar,已亲测可用
java调用redis工具类jedis
赠送jar包:spring-session-data-...标签:springframework、session、spring、data、redis、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化
redis实现分布式锁(java/jedis),其中包含工具方法以及使用demo 本资源是利用java的jedis实现 redis实现分布式锁(java/jedis),其中包含工具方法以及使用demo 本资源是利用java的jedis实现
1.添加 redis session 集群依赖的jar包到 tomcat/lib 目录下 tomcat-redis-session-manager-2.0.0.jar jedis-2.5.2.jar commons-pool2-2.2.jar 2.修改 conf 目录下的 context.xml 文件 host="localhost...
标签:apache、flink、connector、redis、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...