美文网首页
一次平平无奇的问题解决方案

一次平平无奇的问题解决方案

作者: chanyi | 来源:发表于2020-06-13 18:27 被阅读0次

1、问题

问题描述:

最近工作中遇到这样一个问题:将两个系统中某个缓存的值设置为通用的。(这里使用key=test表示)
原系统结构如下图:


系统图

说明:这里的Vo1和Vo2虽是不同类,但是类中的属性业务含义相同。(不然问题本身就没意义)

要求:

要求不能修改之前系统的代码,将两个系统的缓存共用。
简单来说,就是当系统1设设置了test的值,系统2就可以直接读取。反向同理。
修改后的系统结构如下图:


修改后
问题:

根据上图可以看出,两个系统存放的value是经过序列化之后的。所以原来系统中取出redis的value是直接通过反序列化再直接进行类型强制转化的。系统的取值代码如下:

(Vo1)SerializeUtil.unserialize(jedis.get(key.getBytes()))//系统1为例,系统2同理

所以问题是:如果redis中get到的类型不是Vo1的序列化,则会在强制类型转换的时候报错。Vo2同理。

2、解决思路

将value定义为类3(Vo3),系统1和系统2存储时分别将Vo1和Vo2转换为Vo3。在读取的时候,通过不同的系统应用名定位系统,然后针对性的将Vo3转化为Vo1或Vo2.

转化代码如下:(其他代码略去)

JSON.parseObject(JSON.toJSONString(vo3),Class.forName("com.test.vo.Vo1"))

说明:先将vo3转为json String,然后通过Vo1的类路径+类名获取Vo1,最后通过JSON的parseObject方法将json String转为Vo1.

相关文章

  • 【挑战300字第114天】416字

    平平无奇平平无奇平平无奇平平无奇平平无奇平平无奇平平无奇平平无奇平平无奇平平无奇平平无奇平平无奇平平无奇平平无奇平...

  • 一次平平无奇的问题解决方案

    1、问题 问题描述: 最近工作中遇到这样一个问题:将两个系统中某个缓存的值设置为通用的。(这里使用key=test...

  • 平平无奇

    雪后的上午,窗外一样的聒噪。 流浪狗跑来跑去,老奶奶站在墙根晒太阳。 我能见识的几万个日子里的一个雪后的日子罢了 ...

  • 平平无奇

    我的名字同我的生活一样平常,可以说从小学到初中从班里都能找出三个名字一样的人,又是个十分内向腼腆的孩子。不敢举...

  • 平平无奇

    我的名字同我的生活一样平常,可以说从小学到初中从班里都能找出三个名字一样的人,又是个十分内向腼腆的孩子。不敢举...

  • 平平无奇

    昵称 球球 兴趣爱好 吃饭睡觉刷B站,饭后躺尸当咸鱼。嗜辣如命的广东银 以前的经历 没有惊险刺激的普通女孩,做过最...

  • 平平无奇

    今天也是想念薛先生的一天。 今天看到宋先生发了一条动态,是他以前的照片,宋先生说以前好看些,可是我觉得无论以前还是...

  • 平平无奇

    你好,我叫平平无奇 我是一个普通人,我花了24年时间才坦然的接受了这个事实。 如果我不普通的话,我应该是从小就是个...

  • 平平无奇

    誰都不会对一个长相平凡, 身材矮小的男生感兴趣吧。

  • 平平无奇

    我的生活 它平平无奇 从一边望向它 从一边就望穿了它 就像我的眼睛 就像我的脑子 就像我短短数十年来 苍白的经历 ...

网友评论

      本文标题:一次平平无奇的问题解决方案

      本文链接:https://www.haomeiwen.com/subject/htrztktx.html