【Redis】如何使用Redis保存Java对象
前言
最近几天有同事在开发跑合微信版的过程中碰到了一个问题。由于微信端需要通过H5的入口进行账号的绑定,同时需要在会话过期之前定时轮询保持会话有效。这个时候需要在系统中保存微信的ApiConfig对象。
由于这部分的开发之前一直是由外包公司在做(我们团队刚刚组建,系统是购买外包的系统),他们给出的解决方案就是使用Ecache来将ApiConfig整个对象保存到缓存里面。
本来这样做也没有问题,但是外包公司之前提出过我们公司系统使用Ecache缓存在集群环境下有一些bug暂时无法解决,为此换的Redis。现在又说要用回Ecache,感觉上外包公司提出的这种方案只是为了自己能够整个对象保存用起来方便,而又在有Redis的基础上再加上一个缓存而已。并没有实质上说明了为什么Redis不能够使用。因此求人不如求己,自己做了一个Redis对于Java对象的封装。
封装内容
外包公司之前提供的Redis的接口都是通过jedis来注入redisTemplate,然后通过redisTemplate实现对Redis Server的操作的。
从上图中可以看出,外包公司给出的封装内容还是不错的,能够满足平常工作的需求。但是,对于本次面临的问题这里提供的方法是不够用的。Redis的官方文档对于Java实体是没有直接保存的接口可以调用的。这个就需要我们先转化一下实体的类型再进行保存。
我们在上图给出接口中,随便找一个set的方法来看一下。
可以看到在connection.hSet中保存的是序列化内容,在跟踪一下hSet的接口。
参数都是byte[]进行传入,这个很重要。也就是说传入的内容最终还是要转化成byte数组之后才可以保存,当然java对象也是可以先转成byte数组的形式的。
新建保存对象接口
RedisDataService.java
实现接口内容
RedisDataServiceImpl.java
编写对象序列化工具类
RedisSerializeUtil.java
使用开发
获取的时候需要分成两步,先通过hGetByte的方法获取到byte数组,然后通过RedisSerializeUtil.unserialize反序列化成一个对象再将其强制转换成ApiConfig对象。
而保存的时候直接使用hSetByte保存就可以了。
【Redis】如何使用Redis保存Java对象相关推荐
- 在MySQL中保存Java对象_java对象储存到数据库
一. 概述 在开发一些工具的时候, 经常会用到反射, 其中有个方法Object invoke(Object obj, Object... args), 参数里有很多对象参数, 如果我们想预先把参数保存 ...
- redis缓存java对象_Redis缓存系统-Java-Jedis操作Redis,基本操作以及 实现对象保存...
1.Maven配置 redis.clients jedis 2.5.0 com.alibaba fastjson 1.1.41 2.Properties 配置文件 redis.pool.maxActi ...
- java Redis Jedis存储Java对象 - (Java序列化为byte数组方式)
2019独角兽企业重金招聘Python工程师标准>>> Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式) Redis入门 – Jedis存储J ...
- java对象序列化和反序列化,redis存入和获取对象
最近使用redis发现直接存储序列化后的对象更方便,现提供java序列化和反序列化的代码 1.序列化代码: public static byte[] serialize(Object object) ...
- 将java对象存储到redis数据库(两种实现方式)
本文为转载内容,特此声明,如若侵权,请联系删除,原文地址:https://www.cnblogs.com/potentPrince/p/8668544.html redis主要存储类型最常用的五种数据 ...
- 使用redis存储Java对象
在Jedis开发中,我们很多时候希望直接把一个对象放到Redis中,然后在需要的时候取出来.Redis的key和value都支持二进制安全的字符串,存储Java对象不是问题,下面我们看一下如何来实现. ...
- redis中存储java对象的两种方式
根据redis的存储原理,Redis的key和value都支持二进制安全的字符串 1.利用序列化和反序列化的方式 存储java对象我们可以通过对象的序列化与反序列化完成存储于取出,这样就可以使用red ...
- redis存储java对象
1.redis要存储java对象,首先要将java对象序列化 public class Person implements Serializable { private int id; private ...
- Redis能够存储java对象吗?
Redis能够存储java对象吗? 答案:是可以,但是你对象必须要序列化. redis没有办法把一个没有序列化的对象存储到redis中. package com.kuangstudy.entiy;im ...
最新文章
- C++知识点54——RTTI(运行时类型识别)
- Android Studio之gradle的配置与介绍
- 6.Python补充_Python之道
- 微型计算机技术第三版第三章答案,微型计算机原理与接口技术第三章习题及答案...
- Jenkins+Github(Robotframework代码)
- Reason of Random Initialization - Neural Networks
- 站群php自动地图,Discuz自动采集-DZ站群系统自动更新-Discuz站群管理系统
- QTreeView三态复选
- 计算机组装模拟系统吗,怎么在线模拟组装电脑
- vue姓名动态输入三种方式、前端密码加密
- Vue 前端框架接入QQ在线客服
- 关于hadoop安装中nodemanager启动失败的原因
- 在线课程开放平台API分析及脚本制作(一)
- 网络软件-管理网络设备和组件
- Android Studio开发工具的设置
- 2020.10小米校招一面
- 获取某个时间的当月起止时间
- WDK开发入门1-基础环境搭建和第一个驱动程序(VS2010)
- 计算智能课程设计报告
- java中感叹号啥意思_感叹号暗示什么意思