百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

【Java】Redis 保存 Java 对象(java往redis里写数据)

mhr18 2024-10-31 13:24 16 浏览 0 评论

1. 前言

这是一篇来自2018年的文章,当时已经在现在这家公司工作。公司刚起步是购买外包公司产品做定制化开发,在开发微信版的过程中遇到了一个问题。由于微信端需要通过H5的入口进行账号的绑定,同时需要在会话过期之前定时轮询保持会话有效。这个时候需要在系统中保存微信的ApiConfig对象。

这部分之前一直由外包团队开发,他们给出的解决方案是使用Ecache来将ApiConfig整个对象保存到缓存里面。

本来这样做也是没有问题的,但是系统之前一直使用Redis进行数据缓存的。至于当时为什么要用Redis来做数据缓存呢?外包团队给出的答案是使用Ecache在集群环境下存在一些bug,所以换成Redis。

现在又说要用回Ecache,给我的感觉是项目周期太长外包团队就不想思考,怎么快就怎么做了。看到了Ecache能够整个对象保存,因此又在Redis存在的基础上再加上一个缓存而已。

2. 封装

外包团队提供的Redis的接口都是通过jedis来注入redisTemplate,然后通过redisTemplate实现对Redis Server的操作的。

从上图中可以看出,外包团队给出的封装内容对于Redis的基本操作是能够满足平常工作的需求。但是,对于本次面临的问题这里提供的方法是不够用的。

Redis的官方文档对于Java实体是没有直接保存的接口可以调用的。这个就需要我们先转化一下实体的类型再进行保存。

我们在上图给出接口中,随便找一个set的方法来看一下,如下图:

可以看到在connection.hSet中保存的是序列化内容,接着再跟踪一下hSet的接口,如下图:

参数都是byte[]进行传入,这个很重要。也就是说传入的内容最终还是要转化成byte数组之后才可以保存,当然java对象也是可以先转成byte数组的形式的。

2.1 新建保存对象接口

2.2 保存对象接口实现

2.3 编写对象序列化工具类

3. 方法调用

获取的时候需要分成两步,先通过hGetByte的方法获取到byte数组,然后通过 RedisSerializeUtil.unserialize 反序列化成一个对象再将其强制转换成ApiConfig对象。而保存的时候直接使用hSetByte保存就可以了

相关推荐

电商系统价格取值策略及购物车降价提醒方案

商品价格体系的复杂性,如销售价、活动价、会员价等多种价格形式,给用户带来了选择困难,也给系统设计带来了挑战。本文作者从电商系统的价格取值策略出发,详细介绍了如何通过动态价格计算、降价提醒机制以及多价格...

Redis曝新漏洞——RedisRaider

Datadog安全实验室命名了一个名为RedisRaider的恶意行为。RedisRaider会随机扫描公网中的Redis服务器,并利用合法的Redis配置命令在易受攻击的系统上执行恶意cro...

从零开始:使用 Prometheus 监控你的服务器性能

在现代IT运维中,实时监控服务器和应用的运行状态至关重要。而Prometheus作为当前最流行的开源监控系统之一,以其强大的数据采集能力、灵活的查询语言(PromQL)和完善的可视化集成功能,...

Docker集群管理之Docker Compose

前言:在上一篇《Docker集群管理之DockerMachine》中,我们通过源码分析了解了DockerMachine的工作原理,使用者可以通过DockerMachine的一条命令在任意支持的平...

使用Dockerfile build镜像

Docker映像可以看作是Docker容器的压缩包,包含了应用程序以及运行应用程序所需的依赖,容器是映像的运行时实例。一般构建镜像都是使用dockerfile进行构建而不是dockercommit,...

自建私有云相册:Docker一键部署Immich,照片视频备份利器

自建私有云相册:Docker一键部署Immich,照片视频备份利器前言随着人们手机、PC、平板等电子产品多样,我们拍摄和保存的照片和视频数量也在不断增加。如何高效地管理和备份这些珍贵的记忆成为了一个重...

docker容器的使用以及部署mysql

首先什么是docker官方:翻译:Docker是一个用于开发、发布和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分离,以便您可以快速交付软件。使用Docker,您可以像管理应...

自建Docker镜像加速服务,免费且简单,服务器VPS、NAS皆可用
自建Docker镜像加速服务,免费且简单,服务器VPS、NAS皆可用

写在前面:流程十分简单,有手就行,还请耐心看完。本文的实例仅做演示用,不久后将会删除,有需要的各位请自行搭建。免费实例如果15分钟内未收到入站流量,Render会关闭实例的网络服务。Render会在下次收到处理请求时重新启动该服务。Ren...

2025-05-24 15:40 mhr18

用了8年的方式-用 Docker 瞬间搭建本地开发环境

有些时候我们需要在本地搭开发环境,比如平时学习新技术的时候。或者有时候公司的项目需要在本地建一套类似的,方便调试修改。开发环境可能包括MySQL、Redis、Nginx、MQ、Elasticsea...

使用dockerfile构建docker镜像

准备工作购买vps使用ssh工具连接上1、更新系统aptupdate-y2、一键安装Dockercurl-fsSLhttps://get.docker.com-oget-docker.sh...

快速搭建 SpringCloud 微服务开发环境的脚手架

本文适合有SpringBoot和SpringCloud基础知识的人群,跟着本文可使用和快速搭建SpringCloud项目。本文作者:HelloGitHub-秦人HelloGitHub推出...

Docker Hub最全详解(图文全面总结)

DockerHubDockerHub是一个由Docker公司负责维护的公共注册中心,它包含了超过15000多个可用来下载和构建容器的Docker镜像。DockerHub作用Docker好比一个代...

Docker 命令详解

dockerimages—查看本地镜像命令dockerimages说明列出本地已下载的所有镜像及其标签、ID、大小等信息。适用场景查看本地镜像资源、准备删除或管理镜像时。常见用法docker...

Kylin安装Dify

cd/mntgitclonehttps://github.com/langgenius/dify.gitcp/mnt/dify/docker/.env.example/mnt/dif...

kali下对Docker的详细安装

Docker是渗透测试中必学不可的一个容器工具,在其中,我们能够快速创建、运行、测试以及部署应用程序。如,我们对一些漏洞进行本地复现时,可以使用Docker快速搭建漏洞环境,完成复现学习。注:本教程仅...

取消回复欢迎 发表评论: