使用redis存储Java对象

从零到一:手把手教你用STM32和WiFi打造智能温室大棚的物联网核心 本文详细介绍了如何利用STM32单片机和WiFi技术从零构建智能温室大棚的物联网核心系统。内容涵盖硬件选型、传感器集成、低功耗WiFi通信、自动控制逻辑及OLED显示,提供实际部署中的优化技巧和故障排查方案,帮助开发者打造稳定可靠的农业自动化解决方案。 阅读详情

在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中存取正确。



转自【http://alanland.iteye.com/admin/blogs/1600685】

win10 跳过U8环境检测的IE WebControls.rar win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。 立即下载

相关推荐

第二次 PX4仿真环境搭建过程全记录

参考链接 https://blog.youkuaiyun.com/yanwumuxi/article/details/80097294 https://www.ncnynl.com/archives/201709/2013.html 一、安装依赖项 我们使用Debian / Ubuntu LTS 作为Linux的标准支持版本,但是也支持Cent OS 和 Arch Linux的发行版本。 权限设置 警告:永远...

移步换景的博客 2261

Java中使用Redis实现高效缓存与数据存储

Redis是一种快速、开源的内存数据结构存储系统,常被用作高效的缓存和数据存储解决方案。在Java开发中,使用Redis可以极大地提升应用性能,减轻数据库压力,实现分布式系统的数据共享。本篇博客将详细介绍Java中使用Redis的基本操作、数据结构以及缓存策略,并通过实例说明,帮助读者更好地理解和应用Redis。

恋上、小幸福的博客 3019

win 11bitlocker恢复密匙一般情况的解决方式(这里指的是你现在使用的微软账户一直没有变更过)

本来没有打算写这一篇解决帖子的,但是最近好多微博的友友都在私我询问解决方法,孩子虽然很热心,但是真的回复不过来了,打字太累了,这里给大家简单指个路,希望能够对大家有所帮助。 当时出现这个问题的时候,一搜网上的解决方法都是重装系统什么的,真是吓死孩子啦。后来去微软的官网倒腾了半天解决了问题。其实只要你没有改过微软账户,你可以直接试试我这个方法,大概三到五分钟解决问题吧。 和我情况不一样的也可以参考一下贴吧里一些大佬的分享,或者实在着急我感觉去淘宝上找个解决也不是未尝不可。 出现问题: 解决方案: 直接去微软

zhiqingxue的博客 2万+

Redis存储Java对象方案

redis存储Java对象,使用自定义的RedisTemplate类,和使用StringRedisTemplate

qq_45626589的博客 5000

大数据领域数据产品的团队激励与绩效管理

在大数据领域,数据产品的成功离不开高效协作的团队。团队激励与绩效管理的目的在于激发团队成员的工作热情和创造力,提高工作效率和质量,确保数据产品能够按时、高质量地交付。本文章的范围涵盖了大数据领域数据产品团队激励与绩效管理的各个方面,包括激励机制的设计、绩效评估的方法、团队沟通与协作等。本文将按照以下结构进行阐述:首先介绍核心概念与联系,明确相关概念的定义和相互关系;接着讲解核心算法原理和具体操作步骤,为团队激励与绩效管理提供理论支持和实践指导;然后分析数学模型和公式,帮助读者深入理解绩效评估的原理;

Java大师兄的博客 1018

Windows 下 Claude Code Desktop 安装与使用全记录:从零到一的保姆级图文教程

本文主要介绍了Windows 下 Claude Code 安装全记录:从零到一的保姆级图文教程,希望能对学习使用 Claude Code 的同学们有所帮助。 文章目录 1. 背景 2. 安装Claude Code Desktop 3. 配置第三方API 4. 日常使用

weixin_43178406的博客 8万+

【Redis】Redis如何存储一个Java对象【内涵案例】

三种方式实现Redis存储一个java对象。

m0_64210833的博客 5703

lammps 案例:高熵合金FeNiCrCoCu建模及拉伸模拟

高熵合金力学性能模拟包括拉伸、剪切、摩擦等模拟,本文以高熵合金FeNiCrCoCu为例介绍高熵合金建模及拉伸过程模拟。 FeNiCrCoCu原子数量比为1:1:1:1:1 高熵合金的拉伸与单晶拉伸过程类似,主要包含以下步骤: 1.建模 高熵合金含有原子类型较多,建模时,一般以含量最多的原子为主建立初始模型。 使用set type/ratio或者set type/fraction的方式按一定比例替换为其它合金原子。 如随机选择20%的原子1,将其转换为原子2: set type 1 type/ratio 2

lammps_jiayou的博客 6067

Java操作redis常见类型数据存储

redis与mysq都是数据库,java操作redis其实跟操作mysql的过程是差不多的,首先都是导入依赖、建立连接,只是方式不同,redis是非关系数据库而mysql是关系数据库。

让优秀成为一种习惯! 8670

解决pd.read_json报错ValueError: Trailing data问题

首先,我们使用open函数打开JSON文件,然后使用json.load函数将JSON文件数据解码为Python对象。在使用Python进行数据处理中,我们经常需要将JSON格式的数据读入到DataFrame中进行处理。而使用pandas库的read_json函数,就可以方便地将JSON数据读入到DataFrame中。但是有时候在读取JSON数据时,会遇到一个非常常见的错误:ValueError: Trailing data。这个错误的解决方案并不难,只需要在read_json中添加一个参数即可。

学习使你进步。 2234

python实现马丁策略(股市) (附完整源码)

python实现马丁策略(股市) (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 603

JAVA技术体系之分布式篇(四)——Redis缓存

1、Redis概述 1.1 XXX 1.2 XXX 2、Redis数据类型 2.1 XXX 2.2 XXX 2.3 XXX 3、Redis核心原理 3.1 XXX 3.2 XXX 3.3 XXX 4、Redis分布式实现 4.1 XXX 4.2 XXX 4.3 XXX 5、Redis常见问题及解决方案 5.1 XXX 5.2 XXX 5.3 XXX 6、Redis6.0新特性 6.1 XXX 6.2 XXX 6.3 XXX    ...

qsmiley10的博客 4506

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

使用Redis的Hash存储Java对象

使用Redis的Hash存储Java对象

泡^泡 6074

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

使用Redis存储Java对象?使用SpringBoot你可能不用那么麻烦

看了不少文章,往Redis里存对象基本上不外乎两种:将对象转化成Json,然后取出来之后在反序列化,或者将对象转成byte[]。而如果你使用SpringBoot的话,使用Spring-data-redis可能会更加简便。 首先我们使用maven搭建Spring Boot项目,引入Spring data redis的依赖。 <dependency> <groupI...

u014449560的博客 3301

redis使用详解之在redis中存储java对象

redis使用详解之在redis中存储java对象 转载自: https://www.cnblogs.com/JKayFeng/p/5911544.html redis存储对象序列化和反序列化 首先来了解一下为什么要实现序列化 为什么要实现序列化接口    当一个类实现了Serializable接口(该接口仅为标记接口,不包含任何方法定义),表示该类可以序列化.序列化

haha_66666的博客 1719

Redis入门十五:Java中使用Redis五:利用Jedis缓存数据一;(其实,就是利用redis存储【对象JSON序列化后的字符串】)

说明: (1)演示【如何在redis数据库中,存储对象】 ● MySQL数据库,默认会把数据存在硬盘上;由于硬盘的读写速度较慢,随着数据量的增大,并发数的增加,导致MySQL处理速度较慢,出现延迟。 ● Redis利用内存来存储数据,内存读写速度很快;所以,在项目中,比如【商品数据】、【人员信息】、【设备信息】、【资产状况】等不太经常变动的数据,通常使用Redis来存储; ● 本篇博客就是演示【如何在redis数据库中,存储对象】,模拟在...

小枯林的博客 756

Redis学习笔记(四):Java利用Jedis连接Redis实例(使用String类型与Hash类型存储对象的区别)

前言:

爱吃鸡腿的明仔 646

Java使用redis操作存储对象时的序列化操作

如果直接在java上使用Redistemplate在数据库实际存储时会出现一些奇奇怪怪的乱码,所以使用Stringredistemplate,如果存储普通数据可以直接使用,如果存储对象,则要进行序列化操作。

m0_62272060的博客 632

将java对象存储到redis数据库(使用序列化和反序列化)

Redis不支持直接将Java对象存储到数据库中,所以需要将java对象进行序列化得到字节数组,然后将字节数组存入到redis中,需要数据的时候就从redis数据库中取出字节数组,再经过反序列化将自己数组转换成对象使用(jdk序列化性能比谷歌公司的Protobuf序列化性能要差一些,而且序列化后的字节长度要也会长一些,所以推荐使用Protobuf,Protobuf如何进行序列化请看我的另一篇帖子)

智庵的博客 2729

redis java hash存储对象

前言: redis缓存的hash数据类型可以让用户将多个key-value对存储到一个redis键里,适合用来存储对象。 本文介绍在spring-redis环境上使用RedisTemplate操作对象。 接下来的测试是建立在spring-redis环境上的,没有整合spring redis环境则无法与redis缓存进行交互。 实际操作: 创建对象并以hash数据类型保存到redis缓存 package com.server; import java.util.Map; import java.uti

m0_67402236的博客 3409

Java操作Redis存储对象类型数据

背景描述      关于JAVA去操作Redis时,如何存储一个对象的数据,这是大家非常关心的问题,虽然官方提供了存储String,List,Set等等类型,但并不满足我们现在实际应用。存储一个对象是非常常见的。经过网上查找资料以及参考其他网友的代码和实践操作后,整理出Redis如何存储一个对象的demo代码,如果有错误的地方大家可以留言指出。 参考资料 参考地址: https://blo...

干了10几年测试的老油条的博客 9546
上一篇: 支付系统高可用架构设计实战
下一篇: Git Extensions等Windows客户端保存Git用户名密码
系统信息
系统信息 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄23年 2404粉丝 565原创
评论 15
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值