`
liyonghui160com
  • 浏览: 774719 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Redis存储java对象

阅读更多

 

       我们很多时候希望直接把一个对象放到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

 

 

 

 

 

分享到:
评论

相关推荐

    Java 实现Redis存储复杂json格式数据并返回给前端

    2. **JSON字符串存储**:最简单的方式是将Java对象转换为JSON字符串,然后存储为Redis中的String类型。Fastjson库在这里被用到,其`toJSONString`方法可以将Java对象转化为JSON格式的字符串。获取时,直接返回JSON...

    redis的Java客户端开发包Jedis

    Redis是一款高性能的键值对数据库,它以内存存储为主,数据持久化到硬盘,因此在读写速度上有显著优势。Jedis是Java语言用于连接Redis的最常用的客户端库,提供了丰富的Redis命令支持,使得在Java应用中操作Redis变...

    jedisRedis的Java客户端

    Jedis是Redis的Java客户端,它提供了一个丰富的API来操作Redis数据存储系统。Redis是一个高性能的键值数据库,常用于缓存、消息中间件以及数据结构服务器等场景。Jedis作为Java开发者与Redis交互的主要工具,使得在...

    redis_java

    Redis,全称Remote Dictionary Server,是一个开源的、基于键值对的数据存储系统,以其高性能、易用性以及丰富的数据结构而被广泛应用于缓存、消息队列、计数器等多种场景。它支持多种数据类型,如字符串(strings)...

    异步redis + java源码

    在IT领域,Redis是一个高性能的键值存储系统,常用于数据缓存、消息队列以及数据库功能。Java作为广泛使用的编程语言,与Redis的结合应用是常见的开发实践。本篇文章将深入探讨“异步Redis”在Java环境中的实现,...

    Redis的Java客户端Jedis

    Redis是一款高性能的键值对数据存储系统,常用于缓存、消息中间件等场景。而Jedis是Redis官方推荐的Java语言客户端,提供了丰富的API来与Redis服务器进行交互。在2018年6月10日,Jedis的最新版本为2.9.0,这个版本...

    Redis在java中的使用示例

    4. **Hash**: Hash用于存储键值对的集合,适合表示一个对象。Java中,使用`hset`设置字段,`hget`获取字段,`hgetAll`获取所有字段,例如: ```java Map, String> fieldsValues = new HashMap(); fieldsValues.put...

    java连接Redis所需jar包

    Redis是一种高性能的键值对数据存储系统,常用于缓存、消息队列和数据库功能。在Java中,我们可以使用Jedis库来与Redis服务器进行通信。Jedis是Java客户端的一个轻量级、开源的实现,它提供了丰富的命令支持,使得...

    redis和java整合运动的jar包--免费

    这使得Java应用能够高效、稳定地与Redis服务器进行通信,满足各种数据存储和处理需求。在实际开发中,需要根据项目的具体规模和性能要求调整连接池配置,并合理使用Jedis提供的各种操作,以充分发挥Redis的优势。

    java-redis jar

    3. **RedisSerializer**:序列化和反序列化工具,用于将Java对象转换为Redis能识别的格式。常见的序列化方式有StringSerializer(默认)、JdkSerializationRedisSerializer(Java原生序列化)和JsonRedisSerializer...

    java redis增删改查样例

    哈希类型用于存储对象,例如用户信息: ```java Map, String> user = new HashMap(); user.put("name", "Alice"); user.put("age", "25"); jedis.hset("user1", user); ``` 11. **事务(Transactions)** ...

    java操作redis

    3. **基本操作**:一旦连接建立,你可以使用Jedis对象执行各种Redis命令。例如,存储和获取字符串数据: ```java jedis.set("key", "value"); String value = jedis.get("key"); ``` 4. **哈希操作**:对于复杂...

    Java调用Redis 简单Demo

    在IT行业中,Redis是一个高性能的键值存储系统,常用于数据缓存、消息队列以及分布式锁等场景。而Java作为广泛使用的后端开发语言,提供了多种方式来与Redis进行交互。本篇将通过一个简单的Java调用Redis的Demo来...

    05次课 redis-03 java中使用Redis.doc

    "Redis 在 Java 中的使用" 本文档主要介绍了 Redis 在 Java 中的使用,包括 Redis 的 Java 第三方包、Jedis 连接 Redis 数据库的步骤、Jedis 的增删改查、消息订阅等知识点。 1. 关于 Redis 的 Java 第三方包 ...

    完整的java操作redis demo

    在Java与Redis结合的场景中,我们可能需要将Excel数据导入到Redis,例如,将每个单元格的内容作为键值对存储。首先,我们需要读取Excel并处理数据,然后使用Jedis的API将数据存储到Redis。这可能涉及到批量操作,以...

    redisjava例子

    Redis是一款高性能的Key-Value数据库,它以内存存储为主,数据持久化为辅,适合处理大量数据的高速访问。在Java开发中,Jedis是连接Redis的最常用的客户端库,它提供了丰富的API来操作Redis的各种数据结构。在这个...

    详解Java在redis中进行对象的缓存

    在上面的代码中,我们使用Jedis连接池来连接Redis,然后将存储在Redis中的字节数组反序列化成Java对象。 结论 通过本篇文章,我们了解到了Java在Redis中的对象缓存机制。使用Redis进行对象缓存可以提高应用程序的...

    Java面试题78:redis存储对象的方式.mp4

    Java面试题78:redis存储对象的方式.mp4

    redis in action java代码

    2. **哈希(Hash)**:用于存储键值对集合,常用于表示对象。例如,存储用户信息: ```java jedis.hset("user:1", "name", "Alice"); jedis.hset("user:1", "age", "25"); Map, String> user = jedis.hgetAll(...

Global site tag (gtag.js) - Google Analytics