redis存储java对象_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
redis存储java对象_Redis存储java对象相关推荐
- redis储存实体类对象_redis存储对象
redis主要存储类型最常用的五种数据类型: String Hash List Set Sorted set redis存储对象序列化和反序列化 首先来了解一下为什么要实现序列化 为什么要实现序列化接 ...
- redis java应用_redis在JAVA的简单应用
reids是一个高性能的key-value数据库.它存储的value支持各种类型的数据,如String,List,set,hash类型.在此基础上,各种不同方式的排序. 本文不具体争对redis数据库 ...
- redis映射的概念_Redis存储总是心里没底?你大概漏了这些数据结构原理
原标题:Redis存储总是心里没底?你大概漏了这些数据结构原理 上一篇文章<Redis存储总用String?你大概错过了更优的使用方法>我们了解了Redis的数据类型特点与适用场景,本期内 ...
- redis java 队列_Redis 队列 Java调用简单实现
简述 在本博客中,我们将会创建一个reids的消息队列,Redis可以被当成消息队列使用.消息会被存放在一个key-value集合中. redis消息生产者使用RPUSH命令将消息添加到队列的尾部,而 ...
- java redis 重连机制_redis在java中的客户端连接
单例模式下创建连接池,包括断线重连等机制. public class RedisClient { private static JedisPool pool = null; private Redis ...
- redis java 存储图片_Redis 存储图片 [base64/url/path]vs[object]
一.base64图片编解码 基本流程:从网络获取下载一张图片.然后base64编码,再base64解码,存到本地E盘根文件夹下. import java.awt.image.BufferedImage ...
- java 不可修改的集合对象_java集合:关于hashmap存储一个对象,中间改变对象的值,为什么再remove不能用新名字来删除...
代码如下:publicclassDemo1{publicstaticvoidmain(String[]args){HashSetsc=newHashSet<>();bookbook1=ne ...
- java操作阿里云的对象存储OSS
官网:: 对象存储(Object Storage Service,简称OSS) 以下博客简单介绍连接阿里云的OSS,新建Bucket,删除Bucket,向阿里云的OSS存储中存储单个文件,获取单个文件 ...
- Java实验9 T6.将对象和数组存储在dat文件中
题目要求 (将对象和数组存储在文件中) 编写一个程序,向一个名为Exercise19_5.dat的文件中存储一个含5个int值1,2,3,4,5的数组,存储一个表示当前时间的Date对象,存储一个do ...
最新文章
- Asp.Net Session学习总结
- android 禁止Viewpager左右滑动功能
- 【图像处理】——Python实现图像加噪(随机噪声、椒盐噪声、高斯噪声等)
- 【资源下载】 UC 伯克利 Chelsea Finn 博士论文(新起之秀——MAML)《Learning to Learn with Gradients》下载--2018ACM最佳博士论文下载
- 实战经验:Oracle recyclebin过大导致的Insert逻辑读暴增问题的解决
- linux+下c语言编程项目,精通UNIX下C语言编程与项目实践
- 我对于大学软件专业的一些看法
- Java面试问题 021-030
- 网络异步编程(C#)团购课
- [root@py ~]# watch -n 1 ifconfig 求解释
- Unicode 入门详解(V14.0版本)
- 请教有关网络管理的方法
- 在火狐(Firefox)浏览器中安装IE Tab插件
- 根键hkey_classes_root的作用
- Netron可视化Pytorch保存的网络模型
- 利用CMake编译OpenCV-4.1.2源码,使其可以在VS2012下进行图像处理开发的记录(因缺少OpenBLAS未成功)
- scp命令传输出现ssh: Could not resolve hostname错误
- 常见浏览器User-Agent
- Android Camera(13)HEIF Imaging
- 如何屏蔽百度右侧推荐和热搜