我们很多时候希望直接把一个对象放到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
相关推荐
2. **JSON字符串存储**:最简单的方式是将Java对象转换为JSON字符串,然后存储为Redis中的String类型。Fastjson库在这里被用到,其`toJSONString`方法可以将Java对象转化为JSON格式的字符串。获取时,直接返回JSON...
Redis是一款高性能的键值对数据库,它以内存存储为主,数据持久化到硬盘,因此在读写速度上有显著优势。Jedis是Java语言用于连接Redis的最常用的客户端库,提供了丰富的Redis命令支持,使得在Java应用中操作Redis变...
Jedis是Redis的Java客户端,它提供了一个丰富的API来操作Redis数据存储系统。Redis是一个高性能的键值数据库,常用于缓存、消息中间件以及数据结构服务器等场景。Jedis作为Java开发者与Redis交互的主要工具,使得在...
Redis,全称Remote Dictionary Server,是一个开源的、基于键值对的数据存储系统,以其高性能、易用性以及丰富的数据结构而被广泛应用于缓存、消息队列、计数器等多种场景。它支持多种数据类型,如字符串(strings)...
在IT领域,Redis是一个高性能的键值存储系统,常用于数据缓存、消息队列以及数据库功能。Java作为广泛使用的编程语言,与Redis的结合应用是常见的开发实践。本篇文章将深入探讨“异步Redis”在Java环境中的实现,...
Redis是一款高性能的键值对数据存储系统,常用于缓存、消息中间件等场景。而Jedis是Redis官方推荐的Java语言客户端,提供了丰富的API来与Redis服务器进行交互。在2018年6月10日,Jedis的最新版本为2.9.0,这个版本...
4. **Hash**: Hash用于存储键值对的集合,适合表示一个对象。Java中,使用`hset`设置字段,`hget`获取字段,`hgetAll`获取所有字段,例如: ```java Map, String> fieldsValues = new HashMap(); fieldsValues.put...
Redis是一种高性能的键值对数据存储系统,常用于缓存、消息队列和数据库功能。在Java中,我们可以使用Jedis库来与Redis服务器进行通信。Jedis是Java客户端的一个轻量级、开源的实现,它提供了丰富的命令支持,使得...
这使得Java应用能够高效、稳定地与Redis服务器进行通信,满足各种数据存储和处理需求。在实际开发中,需要根据项目的具体规模和性能要求调整连接池配置,并合理使用Jedis提供的各种操作,以充分发挥Redis的优势。
3. **RedisSerializer**:序列化和反序列化工具,用于将Java对象转换为Redis能识别的格式。常见的序列化方式有StringSerializer(默认)、JdkSerializationRedisSerializer(Java原生序列化)和JsonRedisSerializer...
哈希类型用于存储对象,例如用户信息: ```java Map, String> user = new HashMap(); user.put("name", "Alice"); user.put("age", "25"); jedis.hset("user1", user); ``` 11. **事务(Transactions)** ...
3. **基本操作**:一旦连接建立,你可以使用Jedis对象执行各种Redis命令。例如,存储和获取字符串数据: ```java jedis.set("key", "value"); String value = jedis.get("key"); ``` 4. **哈希操作**:对于复杂...
在IT行业中,Redis是一个高性能的键值存储系统,常用于数据缓存、消息队列以及分布式锁等场景。而Java作为广泛使用的后端开发语言,提供了多种方式来与Redis进行交互。本篇将通过一个简单的Java调用Redis的Demo来...
"Redis 在 Java 中的使用" 本文档主要介绍了 Redis 在 Java 中的使用,包括 Redis 的 Java 第三方包、Jedis 连接 Redis 数据库的步骤、Jedis 的增删改查、消息订阅等知识点。 1. 关于 Redis 的 Java 第三方包 ...
在Java与Redis结合的场景中,我们可能需要将Excel数据导入到Redis,例如,将每个单元格的内容作为键值对存储。首先,我们需要读取Excel并处理数据,然后使用Jedis的API将数据存储到Redis。这可能涉及到批量操作,以...
Redis是一款高性能的Key-Value数据库,它以内存存储为主,数据持久化为辅,适合处理大量数据的高速访问。在Java开发中,Jedis是连接Redis的最常用的客户端库,它提供了丰富的API来操作Redis的各种数据结构。在这个...
在上面的代码中,我们使用Jedis连接池来连接Redis,然后将存储在Redis中的字节数组反序列化成Java对象。 结论 通过本篇文章,我们了解到了Java在Redis中的对象缓存机制。使用Redis进行对象缓存可以提高应用程序的...
Java面试题78:redis存储对象的方式.mp4
2. **哈希(Hash)**:用于存储键值对集合,常用于表示对象。例如,存储用户信息: ```java jedis.hset("user:1", "name", "Alice"); jedis.hset("user:1", "age", "25"); Map, String> user = jedis.hgetAll(...