我们很多时候希望直接把一个对象放到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存储java对象_Redis存储java对象相关推荐

  1. redis储存实体类对象_redis存储对象

    redis主要存储类型最常用的五种数据类型: String Hash List Set Sorted set redis存储对象序列化和反序列化 首先来了解一下为什么要实现序列化 为什么要实现序列化接 ...

  2. redis java应用_redis在JAVA的简单应用

    reids是一个高性能的key-value数据库.它存储的value支持各种类型的数据,如String,List,set,hash类型.在此基础上,各种不同方式的排序. 本文不具体争对redis数据库 ...

  3. redis映射的概念_Redis存储总是心里没底?你大概漏了这些数据结构原理

    原标题:Redis存储总是心里没底?你大概漏了这些数据结构原理 上一篇文章<Redis存储总用String?你大概错过了更优的使用方法>我们了解了Redis的数据类型特点与适用场景,本期内 ...

  4. redis java 队列_Redis 队列 Java调用简单实现

    简述 在本博客中,我们将会创建一个reids的消息队列,Redis可以被当成消息队列使用.消息会被存放在一个key-value集合中. redis消息生产者使用RPUSH命令将消息添加到队列的尾部,而 ...

  5. java redis 重连机制_redis在java中的客户端连接

    单例模式下创建连接池,包括断线重连等机制. public class RedisClient { private static JedisPool pool = null; private Redis ...

  6. redis java 存储图片_Redis 存储图片 [base64/url/path]vs[object]

    一.base64图片编解码 基本流程:从网络获取下载一张图片.然后base64编码,再base64解码,存到本地E盘根文件夹下. import java.awt.image.BufferedImage ...

  7. java 不可修改的集合对象_java集合:关于hashmap存储一个对象,中间改变对象的值,为什么再remove不能用新名字来删除...

    代码如下:publicclassDemo1{publicstaticvoidmain(String[]args){HashSetsc=newHashSet<>();bookbook1=ne ...

  8. java操作阿里云的对象存储OSS

    官网:: 对象存储(Object Storage Service,简称OSS) 以下博客简单介绍连接阿里云的OSS,新建Bucket,删除Bucket,向阿里云的OSS存储中存储单个文件,获取单个文件 ...

  9. Java实验9 T6.将对象和数组存储在dat文件中

    题目要求 (将对象和数组存储在文件中) 编写一个程序,向一个名为Exercise19_5.dat的文件中存储一个含5个int值1,2,3,4,5的数组,存储一个表示当前时间的Date对象,存储一个do ...

最新文章

  1. Asp.Net Session学习总结
  2. android 禁止Viewpager左右滑动功能
  3. 【图像处理】——Python实现图像加噪(随机噪声、椒盐噪声、高斯噪声等)
  4. 【资源下载】 UC 伯克利 Chelsea Finn 博士论文(新起之秀——MAML)《Learning to Learn with Gradients》下载--2018ACM最佳博士论文下载
  5. 实战经验:Oracle recyclebin过大导致的Insert逻辑读暴增问题的解决
  6. linux+下c语言编程项目,精通UNIX下C语言编程与项目实践
  7. 我对于大学软件专业的一些看法
  8. Java面试问题 021-030
  9. 网络异步编程(C#)团购课
  10. [root@py ~]# watch -n 1 ifconfig 求解释
  11. Unicode 入门详解(V14.0版本)
  12. 请教有关网络管理的方法
  13. 在火狐(Firefox)浏览器中安装IE Tab插件
  14. 根键hkey_classes_root的作用
  15. Netron可视化Pytorch保存的网络模型
  16. 利用CMake编译OpenCV-4.1.2源码,使其可以在VS2012下进行图像处理开发的记录(因缺少OpenBLAS未成功)
  17. scp命令传输出现ssh: Could not resolve hostname错误
  18. 常见浏览器User-Agent
  19. Android Camera(13)HEIF Imaging
  20. 如何屏蔽百度右侧推荐和热搜

热门文章

  1. crypt模块的使用
  2. 数据库设计原则和需要考虑的因素
  3. [C++学生类] The Student Class
  4. 简单rides和Memory切换缓存 Rides工具类主要方法
  5. 前端HTML拓展知识点
  6. MySQL数据库入门与实战
  7. java项目获取根目录_获取java项目的根目录
  8. 终于有人把云计算、大数据和人工智能讲明白了
  9. 如何快速制作出美观的中国式报表【SuccBI篇】
  10. java基于Springboot+vue的健身房课程预约平台 element